새로운 객체를 생성하고 "객체를 소유"하고 목표 - C에서 객체를 할당하는 경우 즉, 그것에게내가 참조 카운팅 주위에 전체 사업을 이해
을 해제하는 것은 귀하의 책임 때 당신은 ALLOC를 호출해야 할 때그러나 정확하게 새로 생성 된 객체에 alloc을 호출해야하는 경우는 언제입니까? 스코프가 끝난 후에 참조를 유지하거나 다른 이유가있을 수 있습니까?
새로운 객체를 생성하고 "객체를 소유"하고 목표 - C에서 객체를 할당하는 경우 즉, 그것에게내가 참조 카운팅 주위에 전체 사업을 이해
을 해제하는 것은 귀하의 책임 때 당신은 ALLOC를 호출해야 할 때그러나 정확하게 새로 생성 된 객체에 alloc을 호출해야하는 경우는 언제입니까? 스코프가 끝난 후에 참조를 유지하거나 다른 이유가있을 수 있습니까?
개체를위한 메모리를 할당하려면 alloc을 호출해야합니다.
Object *obj = [[Object alloc] init];
ALLOC를 호출 개체에 대한 메모리를 할당하고 초기화 호출을 초기화합니다 (모든 속성/속성 그것을 재치있는 기본값을 제공합니다) :
객체의 전형적인 설정은 같은입니다.
유형 팩토리 메소드와 함께 일부 객체,이 경우 예를 들어
NSArray *arr = [NSArray array];
는, 객체는 초기화하고 단일 배열 호출에 의해 할당된다.
이 두 가지 방법에 서로 다른 소유권 규칙이 적용된다는 점을 제외하고는 참조 계산과 관련이 없습니다.
나는 정확히 객관적이지는 않지만 모든 객체에 alloc
을 호출한다고 생각하지 않는다. 객체를 할당하기 위해 클래스에서 호출하고 새로 할당 된 객체에 init
을 호출한다.
release
을 자동 풀 풀로 수행 한 후에 참조를 유지하려면이 설정을 사용하는 것이 좋습니다. 이는 흔히 [NSThing thingWithStuff:stuff]
또는 일부를 사용하여 생성 된 객체에서 발생합니다.
나는 당신이 기본 개념을 오해하고 있다고 생각합니다. alloc을 클래스에 보내면 (아직 초기화되지 않은) 해당 클래스의 새 객체가 생성됩니다 (보유 개수는 1이됩니다).
"정확히 새로 생성 된 객체에 alloc을 호출해야합니까?" - 객체가 새로 생성 된 경우 다른 사람이 이미 할당 한 것을 의미합니다.
의미 : 새로 생성 된 객체에 대해 언제 retain해야합니까? 그 대답은 당신이 그것을 소유하고 그것을 할당하고자하는 사람에게 의존하지 않고 언젠가 그것을 풀어주기를 원할 때이다. alloc/new 구문은 retain count를 하나 올린다. (NSArray 배열과 같이) 오토 릴리즈 개체를 반환 ..
을 일반적으로 내가 ARC를 사용하는 것이 좋습니다 이러한 문제로 방해하지 ...
유일한 시간이 ** 필요 ** 공장 출하 방법이없는 경우 자신이 ALLOC 호출하는 것입니다. 당신은 카운트를 유지하고 어떤 방법 으로든 물건을 다룰 수 있습니다. – Fogmeister