programing tip

iOS에서 [Class new]와 [[Class alloc] init]의 차이점은 무엇입니까?

itbloger 2020. 11. 7. 09:05
반응형

iOS에서 [Class new]와 [[Class alloc] init]의 차이점은 무엇입니까?


중복 가능성 :
Objective-C의 alloc, init 및 new

[Class new]에 대해 약간 혼란 스럽습니다 [[Class alloc] init]. 및을 content사용하여 개체 정의했습니다 .[Class new][[Class alloc] init]

(1). NSMutableArray *content = [NSMutableArray new];
(2). NSMutableArray *content = [[NSMutableArray alloc] init];

내 질문은 [Class new]의 차이점에 관한 것 [[Class alloc] init]입니다. 저에게는 (1)과 (2)가 비슷합니다. (1)과 (2)가 비슷하다면 왜 우리는 [[Class alloc] init]대부분의 시간을 사용 [Class new]합니까? 약간의 차이가 있다고 생각합니다.

두 가지의 차이점, 장단점을 친절하게 설명 하시겠습니까?


Alloc : NSObject의 클래스 메소드. 수신 클래스의 새 인스턴스를 반환합니다.

Init : NSObject의 인스턴스 메소드. 메모리가 할당 된 직후에 새 객체 (수신자)를 초기화하기 위해 서브 클래스에 의해 구현됩니다.

신규 : NSObject의 클래스 메소드. 수신 클래스의 새 인스턴스를 할당하고 초기화 메시지를 보내고 초기화 된 객체를 반환합니다.

Release : NSObject 델리게이트의 인스턴스 메소드. 수신자의 참조 횟수를 줄입니다.

Autorelease : NSObject 델리게이트의 인스턴스 메소드입니다. 현재 자동 해제 풀에 수신자를 추가합니다.

Retain : NSObject 델리게이트의 인스턴스 메소드. 수신자의 참조 횟수를 증가시킵니다.

복사 : NSObject 델리게이트의 인스턴스 메소드. 수신자의 복사 본인 새 인스턴스를 반환합니다.

결론적으로 우리는

alloc은 init와 함께 간다

신규 = 할당 + 초기화


+new메서드는 +alloc및의 약어입니다 -init. 소유권 의미는 동일합니다. 사용의 유일한 이점 +new은 더 간결하다는 것입니다. 클래스의 이니셜 라이저에 인수를 제공해야하는 경우 대신 +alloc-initWith...메서드 를 사용해야합니다 .


여기 : Objective-C의 alloc, init 및 new

기본적으로 현대 대 전통의 문제입니다. new에 비해 init의 가장 직접적인 장점은 많은 사용자 정의 init 메서드가 있다는 것입니다.

참고 URL : https://stackoverflow.com/questions/11256228/what-is-the-difference-between-class-new-and-class-alloc-init-in-ios

반응형