objective-c - 关于使用@property @synthesize 释放对象的问题

标签 objective-c ios memory-management getter-setter

我知道已经有人问过很多类似的问题,这就是为什么我对发布这篇文章犹豫不决,但我找不到任何能准确回答我的问题的内容:

当我使用@property@synthesize 时,@synthesize 是否负责释放所设置对象的原始值? IE。如果我有:

@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];
}

还是我必须以某种方式自行释放原始对象?

感谢您的澄清!

最佳答案

答案是肯定的。 Setter 和 getter 是为你生成的,做得很好,让你远离内存管理:

-(void)setObject:(NSObject *)newObject {
  if (object != newObject) {
    [object release];
    object = [newObject retain];
  }
}

要释放您的对象,您可以调用:

[self setObject:nil];

关于objective-c - 关于使用@property @synthesize 释放对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7088043/

相关文章:

objective-c - 在 Objective C 中检查互联网连接

ios - 在 Xcode 5.1 中删除 arm64

ios - 如何使用自动布局使 Nib View 适合标签的内容

ios - setStatusBarHidden 已弃用,但唯一有效的方法

ios - ARC 实例变量保留释放

iphone - MapKit - polylineWithCoordinates 互连所有点

c++ - std::string 各种长度的内存分配

c - 使用 C 将 u64 的数组重新解释为 u16 的 3D,而无需更改内存分配

javascript - 如何在 JavaScript 中迭代此 List 类的实例

ios - AVAudioPlayer 得到错误的文件持续时间 iOS 10