Iphone 目标C属性

Iphone 目标C属性,iphone,properties,retain,Iphone,Properties,Retain,我正在开发一个Iphone应用程序。我从一本书中读到有关声明财产的内容,如下所示: @property (nonatomic, retain) NSArray *listData; 然后,在实现文件中,dealloc方法必须放置如下内容: [listData release]; 我想知道我是否申报为 @property NSArray *listData; 我必须释放它吗?它将为我保存一行代码。是的,您必须释放它。retain限定符意味着当您设置属性时,您的类将在NSArray上调用ret

我正在开发一个Iphone应用程序。我从一本书中读到有关声明财产的内容,如下所示:

@property (nonatomic, retain) NSArray *listData;
然后,在实现文件中,dealloc方法必须放置如下内容:

[listData release];
我想知道我是否申报为

@property NSArray *listData;

我必须释放它吗?它将为我保存一行代码。

是的,您必须释放它。retain限定符意味着当您设置属性时,您的类将在NSArray上调用retain。完成类后,您需要释放保留的任何内容,否则会出现内存泄漏

@property NSArray *listData;
只会隐式声明listData的访问器和mutator方法

但是内存管理呢(就iphone应用程序开发而言,这是一件严肃的事情)

若你们打算在实现中使用它,那个么你们应该在dealloc方法中释放它


另请参见Hi,已理解。但是如果我不使用retain,我需要释放它吗?如果我不使用retain,我会有问题吗?看来你没有理解文森特的问题。我会坚持使用retain+release。我认为编译器可能会抱怨您没有在属性中指定保留/分配位;即使没有,大多数情况下,
assign
并不是您真正想要的。是的,编译器会给出警告,未指定的内容,使用assign。好的,对于属性,我将使用retain+release。但对于私有变量,我不会为它们创建属性。我需要释放私有变量吗?经过一些阅读,我现在明白了,cmiiw:1。复制用于NSString*2。对于其他对象,使用retain 3。这两种方法都必须在dealloc方法4中发布。对于基本数据类型,使用assign,无需释放