我已经阅读了一些片段,提到你不应该在init或dealloc方法中使用dot-notation.但是,我似乎永远无法找出原因.一篇文章顺便提到它与KVO有关,但没有更多.
@interface MyClass : NSObject {
SomeObject *object_;
}
@property (nonatomic, retain) SomeObject *object;
@end
Run Code Online (Sandbox Code Playgroud)
这个实现不好?
@implementation MyClass
@synthesize object = object_;
- (id)initWithObject:(SomeObject *)object {
if (self = [super init]) {
self.object = object;
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
但这很好吗?
@implementation MyClass
@synthesize object = object_;
- (id)initWithObject:(SomeObject *)object {
if (self = [super init]) {
object_ = [object retain];
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
在init中使用点符号有哪些缺陷?
我是Objective-C(和stackoverflow)的新手,我有点关于属性的最佳实践.
我的理解是,当你完全使用属性时,可以通过释放它们来避免错误,然后立即设置为nil,以便后续消息也返回nil而不是异常.
[myProperty release],myProperty = nil;
但是,当涉及到"复制"和"保留"属性的dealloc时,是否需要同时执行这两个操作?或做一个简单的
[myProperty发布]剪了吗?另外,我是否正确,我不需要在dealloc中释放'assign'属性?
谢谢!