object-c 학습노트:대상 초기화

1625 단어 object

init 표준 쓰기:


  
    
- init
{
if (self = [super init]) {
// do some thing
}
return self;
}

object - c에서 이 초기화 방법은 정말 이상하다. self는alloc에서 메모리를 분배한 후에 변화가 발생한다.약간 엉뚱한 느낌: (.object-c베이스 이 책에서는 아버지 함수가 서로 다른 상황에 따라 하나의 대상을 재생성할 수 있다는 설명이다. 자류의 변수는 정확하게 반응할 수 있을까? 원래 생성된 실례를 어떻게 없애야 하는가? 여전히 안개다. 기본적인 사실은 [super init]는 서로 다른 대상을 되돌릴 수도 있고, nil로 되돌릴 수도 있다. 단지 먼저 기억할 수 있을 뿐이다.
 
위의 문제와 같이 만약 이런 코드를 사용한다면 정확합니까?
Car* car = [Car alloc];
[car init];
만약에 정상적인 사고방식에 따르면 이것은 정확하기 때문에 alloc는 메모리를 분배하는 것을 책임진다. init는 초기화 값일 뿐이다. 그러나 [car init]는 서로 다른 대상을 되돌릴 수 있기 때문에 모든 것을 이렇게 써야 한다.
Car* car = [[Car aollc] init];
이 문제에서 가장 흔히 볼 수 있는 것은 NSString 클래스이다. 만약에 문자열이 너무 길거나 영어가 아니라면 다른string 클래스로 되돌아갈 수 있다. 사실 NSString은 사용자가 사용하는 유일한 인터페이스이지만 실제로는 그 뒤에 클래스가 있다. object-c의 동적 특성 때문에 당신이 실제로 사용하는 클래스가 무엇인지 알 필요가 없다.

좋은 웹페이지 즐겨찾기