2011-08-03 4 views
0

가능한 중복은 :
alloc, init, and new in Objective-C코코아에서 + new가 사용 되었습니까? 왜 존재 하는가?

+alloc/-init...+new 있습니다. 인스턴스 풀링을 위해 설계된 +new을 제외하고는 해당 역할이 거의 동일합니다. (내 이해에 따르면 :)

그러나 풀링은 +alloc/-init으로 가능합니다. 분리 된 방법이 필요한 이유는 무엇입니까? 아니면 방법에 대한 이유가 있습니까?

그리고 나는 그 방법을 사용하는 어떤 예도 찾을 수 없었다. 이 방법을 언제 사용해야합니까? +new 메서드의 사용 사례를 얻을 수 있습니까?

+0

나는 복제에 동의합니다. 죄송합니다 :) – Eonil

답변

1

Stepstone의 원래 Objective-C 구현에서 +new은 인스턴스 생성에 사용 된 것입니다. 그것은 스몰 토크 (Smalltalk)의 소유였습니다. NeXT는 +new+alloc/-init으로 구분했습니다. 대부분의 클래스가 인스턴스를 사용하는 메모리를 할당하기 위해 다른 작업을 수행 할 필요가 없으며 모든 곳에서 코드를 복제하는 것이 적절하지 않았기 때문입니다.

+3

'+ [NSOject new]'는'return [[self alloc] init]'으로 구현됩니다. 'new '를 사용한다면, 초기화 된 지정자를 호출 할 수 없다는 것을 명심해야한다. 간단히 말해서; '새로운'을 피하십시오. – PeyloW

관련 문제