Objective-C NSMutableArray Count导致EXC\u访问错误
我已经被困在这个问题上好几天了,每次我回到这个问题上,我总是让我的代码越来越让我自己困惑,哈哈。下面是我要做的。我有一个收费表列表,点击其中一个,打开一个包含收费详细信息的模型视图。现在,当呈现模型时,将创建一个对象来获取用户的XML列表并对其进行解析,然后通过自定义委托返回NSMutableArray。然后我有一个按钮,显示一个选择器popover,当调用popover视图时,用户数组用于对popover视图的initWithArray调用。我知道数组中的数据是正确的,但是当调用[pickerUsers count]时,我得到了一个EXC_BAD_访问。我认为这是一个内存/所有权问题,但似乎没有任何帮助。任何帮助都将不胜感激 相关代码片段: Charge Popover(费用详细信息模型视图): 用户选择器视图控制器Objective-C NSMutableArray Count导致EXC\u访问错误,objective-c,nsmutablearray,uipickerview,exc-bad-access,uipopovercontroller,Objective C,Nsmutablearray,Uipickerview,Exc Bad Access,Uipopovercontroller,我已经被困在这个问题上好几天了,每次我回到这个问题上,我总是让我的代码越来越让我自己困惑,哈哈。下面是我要做的。我有一个收费表列表,点击其中一个,打开一个包含收费详细信息的模型视图。现在,当呈现模型时,将创建一个对象来获取用户的XML列表并对其进行解析,然后通过自定义委托返回NSMutableArray。然后我有一个按钮,显示一个选择器popover,当调用popover视图时,用户数组用于对popover视图的initWithArray调用。我知道数组中的数据是正确的,但是当调用[picker
@interface UserPickerViewController .....
NSMutableArray *pickerUsers;
@property(nonatomic, retain) NSMutableArray *pickerUsers;
@implementation UserPickerViewController
@synthesize pickerUsers;
-(UserPickerViewController*) initWithArray:(NSMutableArray *)theUsers {
self = [super init];
if ( self ) {
self.pickerUsers = theUsers;
}
return self;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
// Dies Here EXC_BAD_ACCESS, but NSLog(@"The content of array is%@",pickerUsers); shows correct array data
return [pickerUsers count];
}
如果可能有帮助,我可以提供其他代码。提前感谢。您将保存阵列的ivar声明为
@property (nonatomic, retain) NSMutableArray *pickerUserList;
但是,您有一个实现如下的方法:
-(void) JEHWebAPIFetchedUsers:(NSMutableArray *)theData {
[pickerUserList release];
pickerUserList = theData;
}
您没有保留数据,也没有调用合成的setter。如果您确实构建并分析了这个问题,它会发现这个问题并告诉您。如果没有,请提交一个bug。这将由:[数据保留]完成;self.pickerUserList=数据;首先,阅读Cocoa内存管理指南。这一点应该很清楚。接下来,构建并分析代码。它应该抓住这个。最后,我将用
self.pickerUserList=数据替换这两行代码来修复它代码>
-(void) JEHWebAPIFetchedUsers:(NSMutableArray *)theData {
[pickerUserList release];
pickerUserList = theData;
}