目标C:正确启动一个@property的NSArray的方法

Nic*_*ard 8 iphone objective-c nsarray ios

我班上有一个属性,这是一个NSArray.我保留了这个房产.

我的问题是,在不泄漏并使保留计数过高的情况下,将对象添加到该数组的正确方法是什么?

这就是我正在使用的:

.h:

NSArray *foodLocations;

@property (nonatomic, retain) NSArray *foodLocations;
Run Code Online (Sandbox Code Playgroud)

//我确保在dealloc中合成并释放属性.

.m

- (void)viewDidLoad {
    [super viewDidLoad];

    NSArray *tempFood = [[NSArray alloc] initWithArray:[self returnOtherArray]];
    self.foodLocations = tempFood;
    [tempFood release];

}
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

Rog*_*Rog 8

是的,这是正确的,我喜欢这样做的方式,因为它使代码更具可读性.

您实际上是在分配一个临时数组,然后使用retain属性将其分配给您的属性,因此可以安全地将其解除分类,因为您的属性现在"拥有"它.请记住,您仍需要在dealloc方法中释放它.

您还可以初始化数组并将其分配给视图控制器init方法中的属性,具体取决于您是否需要在视图实际加载之前使用该属性(例如,如果您想在之前读取属性的值推动视图控制器等...)