在出现“线程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;
    }

===============>>#1 票数:1

您的lijstArray getter函数是无限递归的。 假设lijstArray是@property,则每次使用self.lijstArray您都在调用实例方法lijstArray如果用作getter)或setLijstArray如果用作setter)。

您正在使用self.lijstArray三次。 赋值运算符左侧的第一个用法是仅调用[self setLijstArray: ... ]因此尽管这会践踏_lijstArray iVar,但不会导致递归。

您可以在两个地方进行递归,尽管一次就足够了。 首先是[self.lijstArray addObject: ... ][[self lijstArray] addObject: ... ] 这将导致无限递归。

然后使用return self.lijstArrayreturn [self lijstArray]相同-lijstArray实例方法再次调用自身。 这也会导致无限递归。

顺便说一句,堆栈跟踪将提供信息-您将拥有一个非常深的堆栈。

===============>>#2 票数:0

检查以确保该行:

self.details[@"list"]; 

不为null。 还要检查以确保已分配并初始化了tempArray和lijstString。

===============>>#3 票数:0 已采纳

尝试这个:

-(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;
}

  ask by brian translate from so

未解决问题?本站智能推荐:

关注微信公众号