如何初始化 NSString 的 NSArray?
How to initialize an NSArray of NSString?
我正在使用 属性 NSArray 类型。然后我尝试初始化或设置 NSArray 的值。当我使用 shorthand 赋值 时,我得到了输出。但是当我尝试使用 长初始化样式 时,我没有得到结果。后者的正确做法应该是什么??
这是代码片段:
@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
必须始终在 init 之前调用以实际为对象分配内存。 [self moods]
将变为 return 零,直到您将某些内容分配给 self.moods
。
编辑:
如果你出于某种原因真的想避免使用 属性 点符号语法进行赋值,你可以使用 setter 方法来代替:
[self setMoods: [[NSArray alloc] initWithObjects:@"Happy",@"Sad", nil]];
以上回答完全正确。为了完整起见,我很乐意添加评论,但我不能,所以我将添加一个额外的答案来提供所有选项。
如果你总是对 alloc 和 init 的顺序感到困惑,你可以使用便利初始化器。或者如果你想要更简洁的代码。
self.moods = [NSArray arrayWithObjects:@"Happy",@"Sad", nil];
但上面的答案是完美的,我个人更喜欢更明确的分配初始化模式。
只是一些没有点的替代方法...;)
[self setMoods:@[@"Happy", @"Sad"];
我正在使用 属性 NSArray 类型。然后我尝试初始化或设置 NSArray 的值。当我使用 shorthand 赋值 时,我得到了输出。但是当我尝试使用 长初始化样式 时,我没有得到结果。后者的正确做法应该是什么??
这是代码片段:
@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
必须始终在 init 之前调用以实际为对象分配内存。 [self moods]
将变为 return 零,直到您将某些内容分配给 self.moods
。
编辑:
如果你出于某种原因真的想避免使用 属性 点符号语法进行赋值,你可以使用 setter 方法来代替:
[self setMoods: [[NSArray alloc] initWithObjects:@"Happy",@"Sad", nil]];
以上回答完全正确。为了完整起见,我很乐意添加评论,但我不能,所以我将添加一个额外的答案来提供所有选项。
如果你总是对 alloc 和 init 的顺序感到困惑,你可以使用便利初始化器。或者如果你想要更简洁的代码。
self.moods = [NSArray arrayWithObjects:@"Happy",@"Sad", nil];
但上面的答案是完美的,我个人更喜欢更明确的分配初始化模式。
只是一些没有点的替代方法...;)
[self setMoods:@[@"Happy", @"Sad"];