在属性和访问器上

时间:2011-09-30 23:44:12

标签: objective-c properties

假设标头声明包含

@property(nonatomic, assign) DoublyLinkedList *doublyLinkedList;

之间有什么区别吗?
[[self doublyLinkedList] release];
[self setDoublyLinkedList:nil];

[doublyLinkedList release];
doublyLinkedList= nil

一个优先于另一个吗?为什么呢?

1 个答案:

答案 0 :(得分:1)

没有区别。

第二个选项可能会稍快一些,因为它不使用getter / setter方法。

我们很清楚,你在分配时是否保留了doublelyLinkedList?因为否则你会过度释放。

除非你有充分的理由,否则我会跳过所有这些并使用retain而不是assign,并使用self.doublyLinkedList = nil来释放/清除它。

e.g。

定义

@property(nonatomic, retain) DoublyLinkedList *doublyLinkedList;

正在使用

self.doublyLinkedList = nil;

和dealloc

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