iphone - 将具有 "Assign"属性的对象设置为 nil

标签 iphone cocoa cocoa-touch

如果我有一个用“Assign”属性定义的变量,那么可以在 dealloc 方法中将它们设置为 nil 吗?

@property (nonatomic, assign) id test;

- (void)dealloc {
    self.test = nil;
}

最佳答案

最好直接释放ivar。如果子类重写属性的 setter 方法,则您的对象可能会泄漏,因为您的 setter 未被调用。考虑:

@interface ClassA
@property (readwrite, retain) id anObject;
@end

@interface ClassB : ClassA
@end

@implementation ClassA
@synthesize anObject;

- (void)dealloc {
    self.anObject = nil;

    [super dealloc];
}
@end

@implementation ClassB
- (void)setAnObject: (id)anObject {
    // do nothing!
}
@end

ClassB 的实例将泄漏 anObject!

关于iphone - 将具有 "Assign"属性的对象设置为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741808/

相关文章:

objective-c - 如何让 iTunes 跳到轨道的特定时间?操作系统X

xcode - NSTextField 垂直对齐

objective-c - 如何在 Cocoa 中创建字符串的 MD5 哈希?

android - 从 iOS 中的 ([self performSelectorOnMainThread]) 等非 Activity 对象访问 UI-Thread

objective-c - 如何使用最新的 Facebook SDK 从 iOS 向 Facebook 发布内容?

iOS 使用 JSON 参数从 AFNetworking HTTP POST 方法获取 JSON 响应

iphone - 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

objective-c - 如何在 iPhone 注册页面的文本字段中默认显示电话号码?

苹果手机 : revoke distribution certificate and push notifications

应用程序中使用 iPhone 相机进行扫描(如红色激光)