美文网首页iOS Developer
内存管理与属性(mrc)

内存管理与属性(mrc)

作者: 雪儿的小木屋 | 来源:发表于2016-08-06 00:04 被阅读177次

    在MRC下

    @property (nonmatic,strong)NSArray *currentArray;

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        self.currentArray = [NSArray new];

    }

    - (void)dealloc

    {

        [_currentArray release];

       [super dealloc];

    }

    这样会导致内存泄露,因为创建array 的时候,retaincount是1,赋值给属性(setter)方法的时候,retaincount 值增加1。而在dealloc的时候,只是释放了一次,所以会导致内存泄露。修改如下,self.currentArray = [NSArray array]; 这样的属性retain的dealloc释放,类方法产生的是autorelease对象。如下(strong 的setter方法)

    - (void)setCurrentArray:(NSArray *)currentArray

    {

        if(_currentArray != currentArray)

        {

            [_currentArray  release];

            _currentArray = [currentArray retain];

        }

    }

    相关文章

      网友评论

        本文标题:内存管理与属性(mrc)

        本文链接:https://www.haomeiwen.com/subject/siihsttx.html