相关疑难解决方法(0)

我应该在ARC的init方法中引用self.property吗?

一个简单的问题.

如果我有一个属性和一个声明同名的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

50
推荐指数
2
解决办法
1万
查看次数

初始化属性,点符号

在我的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

20
推荐指数
1
解决办法
1万
查看次数

将保留属性设置为新创建的对象的最佳方法

处理创建对象以保留属性的最佳方法是哪种?我已经包含了几个例子.

假设该属性是:

@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)

cocoa objective-c ios

5
推荐指数
2
解决办法
225
查看次数