简单的问题,但我没有得到它。 我定义了一个
@property NSMutableArray* Checkmarks;
myTableView.h
中的
和@synthesize myTableView.m在我的表视图中,我用
分配了它Checkmarks = [[NSMutableArray alloc] init];
in viewDidLoad()在didSelectRowAtIndexPath中,数组填充
[Checkmarks addObject:myObject];
但我的日志显示Checkmarks
为空,但myObject
不是。
这只发生在iOS9中,但我不知道导致这种情况或改变了什么。
请帮助:)
答案 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表示,您应该明确自己的所有权,但我认为默认值意味着这不是您的问题。 )