一个简单的问题.
如果我有一个属性和一个声明同名的ivar:
在.h文件中:
(Reminder*)reminder;
@property(nonatomic,strong)(Reminder*)reminder;
Run Code Online (Sandbox Code Playgroud)
在.m文件中,如果我使用ARC,我应该在init方法中使用ivar还是属性?
- (id)initWithReminder:(Reminder*)reminder_ {
self = [super init];
if (self) {
reminder = reminder_;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
或者我应该使用该属性来获得自动引用计数的好处,如下所示:
- (id)initWithReminder:(Reminder*)reminder_ {
self = [super init];
if (self) {
self.reminder = reminder_;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我不确定在对象的初始化中哪个点可以使用点表示法访问属性.
initialization reference-counting objective-c ios5 automatic-ref-counting
在我的init方法中使用点表示法将retain属性初始化为nil是不是一个坏主意?
对于像这样的普通房产:
@property (nonatomic, retain) id foo;
Run Code Online (Sandbox Code Playgroud)
在我设置的init方法中说self.foo = nil.合成的方法首先释放或自动释放foo(不完全确定潜在的实施).被fooguaranted第一setter或getter调用之前是零?或者它会指向随机垃圾,除非我明确设置foo = nil没有点符号?
initialization properties reference-counting objective-c dealloc
处理创建对象以保留属性的最佳方法是哪种?我已经包含了几个例子.
假设该属性是:
@property (nonatomic, retain) myProperty;
@synthesize myProperty = _myProperty;
Run Code Online (Sandbox Code Playgroud)
选项1:
self.myProperty = [[[MyClass alloc] init] autorelease];
Run Code Online (Sandbox Code Playgroud)
选项2:
self.myProperty = [[MyClass alloc] init];
[self.myProperty release];
Run Code Online (Sandbox Code Playgroud)
选项3:
_myProperty = [[MyClass alloc] init];
Run Code Online (Sandbox Code Playgroud)
选项4:
MyClass *property = [[MyClass alloc] init];
self.myProperty = property;
[property release];
Run Code Online (Sandbox Code Playgroud)