微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使正确声明后也无法访问NSMutableArray对象

如何解决即使正确声明后也无法访问NSMutableArray对象

| 我陷入了一个非常奇怪的问题,对我来说至少是无法解决问题。问题是我在接口中声明了两个nsMutableArrays
 NSMutableArray *lastItemForFormula;  
 NSMutableArray *lastItemForExpression;  

 @property (nonatomic,retain) NSMutableArray *lastItemForFormula;
 @property (nonatomic,retain) NSMutableArray *lastItemForExpression;  
然后在实现中综合它们:
@synthesize lastItemForFormula;
@synthesize lastItemForExpression;  
尝试使用它作为我的函数,如下所示:
-(void)elementClicked:(id)sender {
    UIButton *btnClicked=(UIButton*)sender;  
    Nsstring* formula=[label text];  
    Nsstring *stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag];  
    formula=[formula stringByAppendingString:stringToBeConcatenated];  
    [lastItemForFormula addobject:[formula copy]]; //First 
    [label setText:formula];  
    stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag+1];  
    if ([labelExpression.text length]==0) {  
        [lastItemForExpression addobject:[stringToBeConcatenated copy]];  //Second
        [labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]];  
    }  
    else {  
        [lastItemForExpression addobject:[[Nsstring stringWithFormat:@\"%@+%@\",[labelExpression text],stringToBeConcatenated] copy]]; //Third 
        [labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]];  
    }  
}  
但是,当我调试程序时,两个数组都什么也没有得到……将鼠标悬停在两个数组上时,常量显示0x0。我敢肯定,这很可能是内存管理问题。我将非常有帮助。     

解决方法

您永远不会初始化数组,因此会将addObject消息发送到nil。 在尝试将对象添加到数组中之前,请调用拥有数组的类的init:
lastItemForFormula = [NSMutableArray new];
lastItemForExpression = [NSMutableArray new];
然后确保释放您的dealloc中的数组。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。