关于使用 @property @synthesize 释放对象的问题
我知道已经有人问过很多类似的问题,这就是为什么我犹豫是否要发布此问题,但我找不到任何可以准确回答我的问题的内容:
当我使用 @property
和 @ Synthesize
,@synthesize
是否负责释放正在设置的对象的原始值?即,如果我有:
@interface SomeClass:NSObject
{
NSObject *object;
}
@property (nonatomic, retain) NSObject *object;
@end
@implementation SomeClass
@synthesize object;
@end
这是否相当于获得一个如下所示的 setter 方法?
-(void)setObject:(NSObject *)newObject
{
[object release];
object = [newObject retain];
}
或者我是否必须以某种方式自行释放原始对象?
感谢您的澄清!
I know many similar questions have been asked, which is why I hesitated to post this at all, but I couldn't find anything that answered my question exactly:
When I use @property
and @synthesize
, does @synthesize
take care of releasing the original value for the object being set? I.e. if I have:
@interface SomeClass:NSObject
{
NSObject *object;
}
@property (nonatomic, retain) NSObject *object;
@end
@implementation SomeClass
@synthesize object;
@end
Is this equivalent to getting a setter method that looks like this?
-(void)setObject:(NSObject *)newObject
{
[object release];
object = [newObject retain];
}
Or do I have to somehow take care of releasing the original object myself?
Thanks for the clarification!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
答案是肯定的。 Setter 和 getter 是为您生成的,并且做得很好,可以让您远离内存管理:
要释放您的对象,您可以调用:
The answer is yes. Setter and getter are generated for you and are well done to keep you away from memory management:
To release your object you can call:
不需要自己释放原始对象,但是,您仍然需要在
-dealloc
中清理内容。No need to release the original object yourself, however, you need to still clean things up in
-dealloc
.