2013-08-09 2 views
2

테스트라고하는 방법이 있다고 가정 해 보겠습니다.ARC에서 다시 초기화 된 개체의 메모리는 어떻게됩니까?

test{ 
    NSString *answer = [[NSString alloc] initWithString:@"VALUE 1"]; 
    answer = [[NSString alloc] initWithString:@"VALUE 2"]; 
} 

답변이 다시 초기화되면 ARC의 첫 번째 초기화 메모리는 어떻게됩니까?

+0

두 번째 줄에는 '@'가 없습니다. –

+0

NSString * answer = [[NSString alloc] initWithString : @ "VALUE 1"]; 정확히 NSString * answer = @ "VALUE 1"과 동일합니다. –

+5

NSObject 천국에갔습니다. 그것이 좋은 경우 그것은 NSNumber 또는 UIImage로 환생 수 있습니다. –

답변

2

제 문자열 강한 소유권과 자격이 경우 오브젝트 ([[NSString alloc] initWithString:@"VALUE 1"];에서 생성 된 문자열)

answer이다 해제된다. 그래서 docs에서, 이것은 당신이 answer에 할당 할 때 발생하는 것입니다 :

을 객체를 __strong를 들어, 새로운 pointee 먼저 유지됩니다; 둘째로, lvalue는 원시적 인 의미론으로로드됩니다. 셋째, 새로운 pointee는 원시 의미론을 사용하여 lvalue에 저장됩니다. 마지막으로, 뾰족한 앞머리가 풀립니다. 이것은 원자 적으로 수행되지 않습니다. 동시로드 및 저장에 대비하여 외부 동기화를 사용해야합니다.

+0

ARC가 처리하는 오브젝트와 그렇지 않은 오브젝트를 알고 있습니까? – neo

+0

ARC는 블록을 포함하여 Objective-C 객체를 관리합니다. CoreFoundation 객체, C++ 객체 또는 [mc] alloc을 사용하여 할당 한 메모리는 관리하지 않습니다. 이게 네가 말하는거야? –

+0

예. 고마워. – neo

관련 문제