2012-03-21 77 views
0

越来越对象我的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。谢谢。

回答

1

在添加属性时,您需要照顾内存管理。对于字符串,设置赋值属性不是很好的做法。

相反,做如下,

@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; 
+0

伟大的答案,谢谢! – nubela 2012-03-21 12:16:23

相关问题