内存管理与属性(mrc)

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