2011-10-01 4 views
0

나는 이것이 정확하다는 것을 확신하지만 가능하다면Objective-C 릴리스, 자동 릴리스, 설명 필요

[[self doublyLinkedList] add:[n1 autorelease]]; 

[[self doublyLinkedList] add:n1]; 
[n1 release]; 

은 n1에 대해 동일한 retainCount를 생성합니다. 일단 풀이 비면

+1

두 옵션 모두 'n1'소유 여부에 따라 정확하거나 틀릴 수 있습니다. 당신이 그것을 만들거나 유지한다면 당신은'n1'을 소유하고 있습니다. – albertamg

답변

1

예, 결과는 두 경우 모두 동일합니다.

+0

고마워요! 나도 n1의 반에서 오른쪽으로 돌아올 수 있니? – JAM

+0

나쁜 습관 일 것입니다. 객체는 self에'retain'과'release' ('autorelease')를 호출해서는 안됩니다. –

+0

@aleksejs 대답은 정확하지만 의견은 다릅니다. 객체를 반환하는 메소드는 일반적으로 자동 릴리즈 된 객체를 반환해야합니다. factory 메소드는'[instance autorelease]'를 반환하거나 인스턴스 메소드는 종종'return [[self retain] autorelease];를 수행 할 수 있습니다. – bbum

3

두 방법 모두 결국 동일한 보유 수를 갖지만 명시 적으로 release를 호출하면 개체를 자동 릴리스 풀에 추가하거나 제거하지 않아도되므로 더 효율적입니다.

+0

좋은 지적, 고마워. – JAM