본문 바로가기

Objective-C와 IOS

Objective C New와 Alloc의 차이

책을 보는데 이전과 다르게 인스턴스 생성시 New를 쓰길래 alloc init 과 뭐가 다른지 궁금해서

구글링 해봤다.

The NSObject life cycle

To create an NSObject, send its class either an alloc or a new message:

id anObject = [NSObject new]// Creates and returns an initialized object

id anotherObj = [NSObject alloc]// Not yet ready for use...
anotherObj = [anotherObj init]// ...now it is.

// good style: combine alloc and init:
id oneMoreObj = [[NSObject alloc] init]// identical to using new

Although "new" and "alloc followed by init" methods appear to be identical, Apple documentation seems to give preference to the latter method. This gives developers the ability to override alloc or init separately to achieve a certain result, if necessary.

Note that initializing an object may sometimes fail: for example a file containing the initialization data may be unavailable. In that case, init will return nil. Therefore, it is always necessary to check the return value of init before using the object!


내용인 즉슨 개발을 하다보면 객체를 초기화할때 생성자에서 초기 셋팅을 해줘야할 경우가 있는데 C++ 의 경우는 new 를 사용하면 알아서 생성자를 호출해주지만 Objective C 의 경우 alloc 후에 init을 따로 호출해줘야 한다고 한다.

어째든 new와 alloc init은 같은 의미로 쓰이지만 초기화를 재정의할경우에는 alloc을 써야한다고 나와있다.

아 복잡시려 -_- 걍 alloc 쓰는걸로!!