Alloc/Init 및 인스턴스 변수 설정
-
11-09-2019 - |
문제
메모리를 할당하는 것 외에도 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];