2016-01-13 112 views
0

简单的问题,但我不明白。 我在myTableView.h填充NSMutableArray不起作用

限定的

@property NSMutableArray* Checkmarks; 

和myTableView.m @synthesize它以我的表视图我在viewDidLoad中()在与didSelectRowAtIndexPath方法

Checkmarks = [[NSMutableArray alloc] init]; 

分配它的阵列填充与

[Checkmarks addObject:myObject]; 

但我的日志说t帽子Checkmarks是空的,虽然myObject不是。

这只发生在iOS9中,但我不知道是什么原因造成这种情况或发生了什么变化。

请帮助:)

+1

是选中标记_empty_还是_nil_?不应该是'self.Checkmarks'? –

+0

发布您的完整代码,以便我们可以更好地了解发生的事情。另外,你是否真的需要'@ synthesize'语句? – keithbhunter

+0

'Checkmarks'不为空 – TomWayne

回答

3

首先你不需要合成的,你只需要它,当你提供一个自定义的setter和getter,似乎不是你的情况。

其次,你应该与外显记忆所有权声明的性质,因此,你应该有:

@property (strong, nonatomic) NSMutableArray *checkmarks; 

当您删除合成,你可以做_checkmarks ADDOBJECT或[self.checkmarks ADDOBJECT:myObject的。

然后尝试在您的addObject之前和之后打印您的复选标记。复选标记必须在addObject之前打印一个空数组,然后必须拥有该对象。请注意,空数组与nil不同。

2

由于Checkmarks为零,这意味着你的alloc/init没有按照你的预期工作。

你viewDidLoad中应该是这个样子:

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    self.Checkmark = [[NSMutableArray alloc] init]; 
} 

这应该是一个UIViewController(包括一个UITableViewController)和在一个UITableView。

(另外值得注意:按照惯例,属性以小写字母开头,并且,作为Tiago说,你应该明确你的所有权,但我觉得默认的意思是这不是你的问题在这里)

+0

是的,默认情况下它现在很强大,至少上次我看到它,但我总是建议显式所有权这很容易做,并不是每个人都知道默认的xD –