糾結了兩天的問題,終於找到原因了!
錯誤情形:類的成員變量NSArray array.經過@property(nonatomic,copy)和@synthesize。
在類的初始化方法裡對array賦值array=[result objectForKey:@"list"];
打印array:NSLog(@"array is %@",array);結果正常。
然後將array作為tableview的數據源,一直出現問題。
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if(array!=nil){
NSLog(@"array is %@",array);
return [array count];
}else{
return 1;
}
}
打印都會報錯。
然後在array的賦值語句裡加了個retain,問題竟然解決了。
array=[[result objectForKey:@"list"]retain]或者在array前加上self.
self.array=[result objectForKey:@"list"].也行。
所以調用self.成員變量,這個成員變量的retain會加1的,切記。
因此像self.A=[A alloc]init]這樣的代碼很可能會crash的。