문제

메모리를 할당하는 것 외에도 alloc 모든 인스턴스 변수를 설정합니다 (제외) isa 변수)에서 0 또는 0에 대한 등가 유형, 예를 들어 nil, NULL, 그리고 0.0.

그러나 나는 최근에 다음을 읽었습니다 init:

초기화는 객체의 인스턴스 변수를 합리적이고 유용한 초기 값으로 설정합니다.

나는 "합리적이고 유용한 초기 가치"가 무엇을 의미하는지에 대해 약간 혼란스러워합니다 ....

만약에 alloc 이미 값을 0으로 설정했습니다 init 어떤 식 으로든 이러한 값을 변경합니까?

도움이 되었습니까?

해결책

Alloc이 이미 값을 0으로 설정 한 경우, 이러한 값을 어떤 식 으로든 변경합니까?

확신하는.

예를 들어, 너비와 높이를 나타내는 Ivars가있는 사각형을 나타내는 물체가있을 수 있습니다. 안에 init 이 IVAR을 300x200 (300x200)으로 초기화 할 수 있습니다.

그게 그들이 말하는 전부입니다.

nsobject 의지 묻는 경우 -init 메소드는 서브 클래스의 IVAR의 값을 0이 아닌 값으로 초기화하는 것입니다. 물론 답은 아니오입니다.

다른 팁

예, 전적으로 가능합니다. 예를 들어, 데이터 구조에는 동적 메모리가 필요한 멤버 변수가 할당되어 초기화 될 수 있습니다. 그만큼 alloc 전화는 회원 변수와 init 호출은 해당 값을 유용하게 만듭니다 (예 : 서브 알 로베이션 및 초기화).

alloc 그리고 init 여러 가지 가질 수 있기 때문에 별도입니다 init 객체를 다른 방식으로 초기화하는 클래스의 루틴.

당신은 또한 전화 할 수 있습니다 alloc 그리고 init 동시에 전화로 new. 따라서 다음 두 줄은 동일합니다.

[[NSObject alloc] init];
[NSObject new];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top