当前位置:  开发笔记 > 编程语言 > 正文

当我在dealloc方法中将属性设置为nil时,究竟会发生什么?

如何解决《当我在dealloc方法中将属性设置为nil时,究竟会发生什么?》经验,为你挑选了2个好方法。

-(void)dealloc {
    self.myOutletProperty = nil;
    [super dealloc];
}

我想会调用一种虚拟的setter.但到底发生了什么?为什么没有?



1> Igor..:

你应该知道,那个属性只是语法糖.

例如:

@property(nonatomic, retain) NSString *myString;

将转换为

- (NSString*)myString { 
    return myString; 
}

- (void)setMyString:(NSString*)newString {
    if (myString != newString) {
        [myString release];
        myString = [newString retain];
    }
}

因此,如果您声明@property,那么它实际上会释放



2> oxigen..:

1.如果属性类型是"复制"或"保留",那么

self.myOutletProperty = nil; 与[myOutletProperty release]相同;

2.如果属性类型是"assign",那么

self.myOutletProperty = nil; 没做什么

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有