2014년 10월 29일 수요일

NSArray(NSMutableArray)의 arrayWithArray와 initWithArray의 차이점

arrayWithArray를 이용해서,  NSMutableArray를 만들었는데, 이놈이 scope만 넘어가면 사라지네.

확인해보니, arrayWithArray는 alloc후에 init만 해주고, autorelease를 호출한다.

즉, 사용자는 알지 못하는 시점에 메모리가 해제된다.

initWithArray는 위와 똑같지만 retain을 마지막에 해준다.

즉, arrayWithArray를 호출한 후에 retain을 불러주면, initWithArray와 동일하다.

p.s : 객체를 생성하는 static 메소드들은 대부분 alloc -> init -> autorelease 가 순차적으로 호출되도록 되어있고, 멤머 메소드들은 alloc -> init -> autorelease -> retain 을 해준다.

댓글 없음: