나는 이것에 대해 논의 된 바 있음을 알고 있지만, 일부 메모리 관리를 얻지 못했습니다. retain은 객체를 유지하고 copy는 객체의 사본을 별도로 제공한다는 것을 이해합니다.목표 C 메모리 관리의 어려움
property = newValue;
// retain
if (property != newValue)
{
[property release];
property = [newValue retain];
}
하지만 예 곳을 본 적이 : 그것은, & 속성을 인스턴스 변수 유지에 관해서 속성은 세터 출시 이전 값 &이 새를 유지한다는 뜻 내가하지 않는 무엇
입니다 그들은 고정 문자열을 retain 속성 ivars에 할당합니다.
self.stringProperty = @"something";
(some other code)
self.stringProperty = @"somethingElse";
set string의 두 번째 호출은 허용되지 않는 정적 문자열에서 release를 호출해야합니다. 왜 프로그램이 중단되지 않습니까?
또한 객체가 retain 속성 &으로 선언 된 경우 init과 함께 무언가가 할당됩니다.
@property(retain)someArray;
someArray = [[NSArray alloc] initWithArray:arbArray];
는 지금 someArray 평균 2의 유지 수를 가지고 있지만이
someArray = [NSArray arrayWithArray:arbArray];
로 생성 된 경우 2는 팩토리 메소드이기 때문에 계수는 1 유지 하는가?
죄송합니다. 두 샘플 모두에서 self.someArray를 의미했습니다. –