2025-02-15

糾結瞭兩天的問題,終於找到原因瞭!

錯誤情形:類的成員變量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的。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *