Objective c 关于财产的问题
如果使用retain属性声明属性,是否需要在将属性设置为nil之前释放该属性 @synthesis指令做什么 不,事实上你根本不需要发布它。那将是一个错误。您甚至不必将它设置为nil,除非您真的想在您自己的类发布之前控制它的发布时间,也就是说。 可能以优化的方式为您创建getter和setter方法。 要了解更多信息,我建议您阅读 不,事实上你根本不需要发布它。那将是一个错误。您甚至不必将它设置为nil,除非您真的想在您自己的类发布之前控制它的发布时间,也就是说。 可能以优化的方式为您创建getter和setter方法。Objective c 关于财产的问题,objective-c,cocoa,ios4,Objective C,Cocoa,Ios4,如果使用retain属性声明属性,是否需要在将属性设置为nil之前释放该属性 @synthesis指令做什么 不,事实上你根本不需要发布它。那将是一个错误。您甚至不必将它设置为nil,除非您真的想在您自己的类发布之前控制它的发布时间,也就是说。 可能以优化的方式为您创建getter和setter方法。 要了解更多信息,我建议您阅读 不,事实上你根本不需要发布它。那将是一个错误。您甚至不必将它设置为nil,除非您真的想在您自己的类发布之前控制它的发布时间,也就是说。 可能以优化的方式为您创建get
有关更多信息,我建议您阅读。在将保留属性设置为nil之前,您不需要释放它,只要您使用一个为您执行释放的setter即可。如果您已使用retain声明了一个属性,则合成setter将为您执行发布。这就引出了@synthesis指令。它只是告诉编译器使用您在@property中指定的属性为您编写setter和getter。您不需要在将保留属性设置为nil之前释放它,只要您使用为您执行释放的setter。如果您已使用retain声明了一个属性,则合成setter将为您执行发布。这就引出了@synthesis指令。它只是告诉编译器使用@property中指定的属性为您编写setter和getter。在设置另一个对象或属性变量中的nil之前,您确实需要释放保留的对象,但这是由访问器完成的,如果您愿意的话
self.myVar = nil;
@synthesis所做的是在您没有定义访问器方法的情况下自动为您创建访问器方法
因此,如果您将您的财产写为:
@property (nonatomic, retain) NSObject *property;
然后你可以认为合成的访问器是等价的,我说是等价的,因为我们不知道这是怎么做到的。。。有关更多信息,请阅读以下文档:
- (void) setProperty:(NSObject *)aProperty{
if(property != aProperty){
[property release];
property = [aProperty retain];
}
}
- (NSObject*) property{
return property;
}
这一部分非常重要,我建议大家花尽可能多的时间来了解这一点。同时阅读并分配副本
在属性变量中设置另一个对象或nil之前,确实需要释放保留的对象,但如果您愿意,这是由访问器完成的
self.myVar = nil;
@synthesis所做的是在您没有定义访问器方法的情况下自动为您创建访问器方法
因此,如果您将您的财产写为:
@property (nonatomic, retain) NSObject *property;
然后你可以认为合成的访问器是等价的,我说是等价的,因为我们不知道这是怎么做到的。。。有关更多信息,请阅读以下文档:
- (void) setProperty:(NSObject *)aProperty{
if(property != aProperty){
[property release];
property = [aProperty retain];
}
}
- (NSObject*) property{
return property;
}
这一部分非常重要,我建议大家花尽可能多的时间来了解这一点。同时阅读并分配副本