我正在使用NSArray类型的属性。然后,我尝试初始化或设置NSArray的值。当我使用速记分配时,我得到了输出。但是,当我尝试使用长初始化样式时,没有得到结果。后者的正确方法是什么?
这是代码片段:
@property NSArray * moods;
//shorthand assignment
self.moods=@[@"Happy",@"Sad"];
NSLog(@"Hello %@",[self moods]);
可以了但是当我尝试:
//long initialization style
[[self moods]initWithObjects:@"Happy",@"Sad", nil];
NSLog(@"Hello %@",[self moods]);
这不是以相同的方式进行。请给我一些建议。
最佳答案
第二个示例应该是:
self.moods = [[NSArray alloc] initWithObjects:@"Happy",@"Sad", nil];
必须始终在初始化前调用
alloc
才能为对象实际分配内存。 [self moods]
将返回nil,直到您为self.moods
分配了内容。编辑:
如果您确实出于某种原因希望避免通过属性点表示法语法进行赋值,则可以使用setter方法代替:
[self setMoods: [[NSArray alloc] initWithObjects:@"Happy",@"Sad", nil]];
关于ios - 如何初始化NSString的NSArray?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37930683/