获得EXC_BAD_ACCESS中的UITableViewController而从NSMutableArray的
问题描述:
越来越对象我的UITableViewController的子类,我初始化子类与其他自定义类的NSMutableArray中:获得EXC_BAD_ACCESS中的UITableViewController而从NSMutableArray的
#import <UIKit/UIKit.h>
#import "NUBCheckpointModel.h"
@interface NUBUserCheckpointModel : NSObject
@property (nonatomic,assign) NSString* objId;
@property (nonatomic,assign) NSString* userId;
@property (nonatomic,assign) NSString* checkpointId;
@property (nonatomic,assign) NSDate* dateAdded;
@property (nonatomic,assign) NUBCheckpointModel* checkpoint;
+ (NUBUserCheckpointModel*) fromJson: (NSString*)json;
@end
从另一个视图控制器生成此阵,被传递这个子类TableViewController,其中包含此属性
@property (nonatomic,retain) NSMutableArray* userCheckpointData;
此属性设置是这样的:
- (id)initWithFrame: (CGRect)frame withType: (TableType)typeOfTable fromParent: (UIViewController*)parent data: (NSMutableArray*)ucpData
{
self = [self init];
if (self) {
self.tableView = [[UITableView alloc] initWithFrame:frame];
self.parentController = parent;
self.userCheckpointData = ucpData;
[self styleTable];
[self addPullToRefreshHeader];
typeCategory = typeOfTable;
}
return self;
}
一切都很好,直到这部分,任何操作,包括试图从数组中获取对象工作正常。我测试了它。
我用来测试数组的代码是:
NUBUserCheckpointModel* model = [self.userCheckpointData objectAtIndex:0];
NSLog(model.objId);
然而,这非常相同的代码,在这里当用于
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
给我EXC_BAD_ACCESS。我可以知道这是为什么发生吗?我似乎无法弄清楚为什么。我使用ARC btw。谢谢。
答
在添加属性时,您需要照顾内存管理。对于字符串,设置赋值属性不是很好的做法。
相反,做如下,
@property (nonatomic,copy) NSString* objId;
@property (nonatomic,copy) NSString* userId;
@property (nonatomic,copy) NSString* checkpointId;
@property (nonatomic,retain) NSDate* dateAdded;
@property (nonatomic,retain) NUBCheckpointModel* checkpoint;
伟大的答案,谢谢! – nubela 2012-03-21 12:16:23