Я использую ARC и нацеливаюсь на iOS 5. Я объявил ивар NSMutableArray в одном из заголовков моего контроллера представления, инициализировал его в viewDidLoad и пытаюсь манипулировать им в некоторых методах моего контроллера представления.Тем не менее, это ведет себя очень странно.Когда я отправляю ему сообщения типа «addObject:» или пытаюсь установить его равным NSMutableArray, созданному в локальной области видимости метода, он отправляет сообщение другим объявленным мной иварам.
Например, одна из ошибок, которую я продолжаю получать, - [PullToRefreshView count]: нераспознанный селектор, отправленный экземпляру.PullToRefreshView - это еще один из моих иваров, но в моем коде я четко отправляю сообщение счетчика в мой ивар NSMutableArray.При попытке добавить объект к NSMutableArray типа ivar его счетчик (в отладчике) остается равным 0. Я продолжаю искать в своем коде что-то, что я, возможно, упустил из виду, но это просто кажется чем-то вроде случайности управления памятью ARC.Есть идеи?Вот соответствующие области моего кода:
MyViewController.h
@interface MyViewController : UIViewController
{
PullToRefreshView *pull;
NSMutableArray *commentsSharesMerged;
}
@property (nonatomic, retain) PullToRefreshView *pull;
@property (nonatomic, retain) NSMutableArray *commentsSharesMerged;
- (void)refreshComments;
- (void)refreshShares;
@end
MyViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
commentsSharesMerged = [[NSMutableArray alloc] init];
pull = [[PullToRefreshView alloc] initWithScrollView:(UIScrollView *)self.suggestionTable];
[pull setDelegate:self];
[self.suggestionTable addSubview:pull];
}
- (void)refreshComments
{
NSURL *url = [NSURL URLWithString:@"http://example.com/comments.json"];
__unsafe_unretained __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^{
NSString *responseString = [request responseString]; // Use when fetching text data
NSData *responseData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
id jsonObject = [[CJSONDeserializer deserializer] deserialize:responseData error:nil];
NSLog(@"Connection JSON: %@", jsonObject);
NSMutableArray *commentsArray = [[NSMutableArray alloc] init];
for (int i = 0; i < [jsonObject count]; i++)
{
NSDictionary *currentCommentData = [jsonObject objectAtIndex:i];
Comment *comment = [[Comment alloc] init];
comment.identifier = [[currentCommentData objectForKey:@"id"] intValue];
comment.firstName = [currentCommentData objectForKey:@"first_name"];
comment.lastName = [currentCommentData objectForKey:@"last_name"];
comment.commentText = [currentCommentData objectForKey:@"comment"];
[commentsArray addObject:comment];
}
self.commentsSharesMerged = [commentsArray mutableCopy];
// I've also tried to add the object using something like this
//for (Comment *comment in commentsArray)
// [commentsSharesMerged addObject:comment];
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"%@", error);
}];
[request startAsynchronous];
}