静的ライブラリを使用してテストしようとしており、このメソッド (静的ライブラリにあります) を呼び出しています。
-(NSMutableDictionary *)parseJSONfromURL:(NSURL *)url{
__strong NSMutableDictionary *json;
[self.delegate isParsing:(url != nil)];
if (url == nil) {
[NSException raise:NSArgumentDomain format:@"The passed url argument cannot be nil"];
}
NSError *err;
json = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:url] options:NSJSONReadingMutableLeaves error:&err];
if (err) {
[json setObject:err forKey:@"error"];
}
while (json == nil) {
NSLog(@"waiting...");
}
[self.delegate isParsing:NO];
[self.delegate didFinishParsing:(json != nil)];
return json;
}
whilejson が返されるため、ループは無限になると予想されますnullが、デリゲート メソッドdidFinishParsingが送信されるため、そうではありませんnull。このように(ACParserはライブラリ内のクラスです)
ACParser *p = [[ACParser alloc] initWithDelegate:self];
dictionary = [p parseJSONfromURL:[NSURL URLWithString:@"http://www.a-cstudios.com/text.json"]];
辞書はこのように宣言されています
__strong NSMutableDictionary *dictionary;
その URL の JSON は非常に単純です
{
"text" : "testing"
}
ただし、これが呼び出されるたびに、デリゲート メソッドdidFinishParsing:でログdictionaryが返されます(null)。ここで何が間違っていますか?静的ライブラリから呼び出しているからですか?