静的ライブラリを使用してテストしようとしており、このメソッド (静的ライブラリにあります) を呼び出しています。
-(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;
}
while
json が返されるため、ループは無限になると予想されます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)
。ここで何が間違っていますか?静的ライブラリから呼び出しているからですか?