国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

objective-c - OC 在初始化方法或者是 dealloc 中最好不要使用屬性,為什么?
習慣沉默
習慣沉默 2017-05-02 09:29:36
0
3
877

看過好幾次這種描述:在初始化方法或者是 dealloc 中最好不要使用屬性,因為無法確定 self 到底是不是確實調用的是你想要的實例,這個是為什么呢?

習慣沉默
習慣沉默

全部回復(3)
漂亮男人

在哪看的?那都是陳年往事了,ARC 里沒有限制,隨便用。

以前手動管理內存的年代,因為調用屬性會涉及到引用計數器的加減,而 self = [super ...] 初始化的對象不一定是當前類的對象,可能是“變體”或私有類(objc里的class有 classmetaclass 的區(qū)別),所以在你不知道屬性 setter 方法里到底是怎么加減引用計數器的情況下,你就只針對 ivar 進行 retain 和 release 就行了。

- (id)initWithString:(NSString *)str
{
    self = [super init];
    if (self) {
        _foo = [str copy];
    }
    return self;
}

- (void)dealloc
{
    [_foo release];
    [super dealloc];
}

retain(copy,new) 和 release 成對出現

給我你的懷抱

因為會產生循環(huán)引用,比方delegate,然后造成永遠也釋放不掉

漂亮男人

因為有分類(Category)以及setter以及getter以及KVO等需要注意
最主要的是因為分類.語法可以調用分類的屬性及方法,但是_就不行了,需要注意

最新下載
更多>
網站特效
網站源碼
網站素材
前端模板