填写NSMutableArray不起作用

时间:2016-01-13 14:51:39

标签: ios objective-c

简单的问题,但我没有得到它。 我定义了一个

 @property NSMutableArray* Checkmarks; 
myTableView.h

中的

和@synthesize myTableView.m在我的表视图中,我用

分配了它
Checkmarks = [[NSMutableArray alloc] init]; 

in viewDidLoad()在didSelectRowAtIndexPath中,数组填充

[Checkmarks addObject:myObject]; 

但我的日志显示Checkmarks为空,但myObject不是。

这只发生在iOS9中,但我不知道导致这种情况或改变了什么。

请帮助:)

2 个答案:

答案 0 :(得分:3)

首先,您不需要合成,只需在提供自定义设置器和getter时使用它,而且似乎不是您的情况。

其次,您应该声明具有显式内存所有权的属性,因此,您应该:

@property (strong, nonatomic) NSMutableArray *checkmarks;

删除合成时,可以执行_checkmarks addObject或[self.checkmarks addObject:myObject]。

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

答案 1 :(得分:2)

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

您的viewDidLoad应如下所示:

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

这应该是在UITableView中的UIViewController(包括UITableViewController)和而不是

(另外值得注意的是:根据惯例,属性以小写字母开头,而Tiago表示,您应该明确自己的所有权,但我认为默认值意味着这不是您的问题。 )