По некоторым причинам в приведенном ниже коде массив replies
равен NSLogging
правильному описанию, а массив comment.replies
равен NSLogging
null.
Я сразу предположил, что это было связано с проблемой управления памятью в моем коде, но я не верю, что это правда.
Пожалуйста, вы можете сказать мне, почему это происходит?
- (TBComment *) dictionaryToComment:(NSDictionary *)dict {
TBComment *comment = [[TBComment alloc] init];
[comment setBody:[dict objectForKey:@"body"]];
[comment setCommentID:[dict objectForKey:@"id"]];
[comment setCreated_at:[dict objectForKey:@"created_at"]];
[comment setUpdated_at:[dict objectForKey:@"updated_at"]];
[comment setUser:[self dictionaryToUser:[dict objectForKey:@"user"]]];
NSMutableArray *replies = nil;
if ([[dict allKeys] containsObject:@"replies"]) {
replies = [[NSMutableArray alloc] init];
for (NSDictionary *reply in [dict objectForKey:@"replies"]) {
NSLog(@"in");
[replies addObject:[self dictionaryToComment:reply]];
}
}
if (replies != nil) {
[comment setReplies:replies];
NSLog(@"COMMENT REPLIES = %@", comment.replies);
NSLog(@"REPLIES = %@", replies);
[replies release];
}
return [comment autorelease];
}
Консоль ->
2011-11-30 21:25:14.980 Timbrr[2379:f803] in
2011-11-30 21:25:14.980 Timbrr[2379:f803] COMMENT REPLIES = (null)
2011-11-30 21:25:14.980 Timbrr[2379:f803] REPLIES = (
"<TBComment: 0x68dbeb0>"
)
- (void) setReplies:(NSArray *)_replies {
hasReplies = (_replies == nil ? NO : ([_replies count] == 0 ? NO : YES));
//replies is synthesised
}