[英]EXC_BAD_ACCES in NSArray
在出現“線程1:EXC_BAD_ACCES(code = 2,adress = 0xbf7fffffc)”錯誤
NSArray *tempArray ] [lijstString componentsSeperatedByString:@","];
我該怎么辦?
這是整個代碼部分:
-(NSMutableArray *)lijstArray{
NSString *lijstString = self.details[@"lijst"];
NSArray *tempArray = [lijstString componentsSeparatedByString:@", "];
self.lijstArray = [NSMutableArray array];
for (NSString *lijstValue in tempArray) {
[self.lijstArray addObject:[lijstValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}
return self.lijstArray;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
您的lijstArray
getter函數是無限遞歸的。 假設lijstArray是@property,則每次使用self.lijstArray
您都在調用實例方法lijstArray
如果用作getter)或setLijstArray
如果用作setter)。
您正在使用self.lijstArray
三次。 賦值運算符左側的第一個用法是僅調用[self setLijstArray: ... ]
因此盡管這會踐踏_lijstArray
iVar,但不會導致遞歸。
您可以在兩個地方進行遞歸,盡管一次就足夠了。 首先是[self.lijstArray addObject: ... ]
與[[self lijstArray] addObject: ... ]
。 這將導致無限遞歸。
然后使用return self.lijstArray
與return [self lijstArray]
相同-lijstArray實例方法再次調用自身。 這也會導致無限遞歸。
順便說一句,堆棧跟蹤將提供信息-您將擁有一個非常深的堆棧。
檢查以確保該行:
self.details[@"list"];
不為null。 還要檢查以確保已分配並初始化了tempArray和lijstString。
嘗試這個:
-(NSMutableArray *)lijstArray{
if(!_lijstArray){ //If you need get new lijstArray always, comment this line, and below "}"
NSString *lijstString = self.details[@"lijst"];
NSArray *tempArray = [lijstString componentsSeparatedByString:@", "];
_lijstArray = [NSMutableArray array];
for (NSString *lijstValue in tempArray) {
[_lijstArray addObject:[lijstValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}
}
return _lijstArray;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.