나는 Objective-C 방식을 다시했을 때, 최근에 (즉 지금은) retain
및 release
과 관련하여 Apple 사이트에서 설명서를 읽었습니다.Apple의 참조 라이브러리에서 유지/해제 의미에 대한 기본적인 질문
- (void)setUpPlacardView
{
// Create the placard view -- it calculates its own frame based on its image.
PlacardView *aPlacardView = [[PlacardView alloc] init];
self.placardView = aPlacardView;
[aPlacardView release]; // What effect does this have on self.placardView?!
placardView.center = self.center;
[self addSubview:placardView];
}
전체 클래스를보고하지, self.placardView
또한 PlacardView *
및 aPlacardView
에 그것의 할당하지 않습니다 것 같다 그러나, 조금 혼란 저를 가지고 자신의 Creating an iPhone Application 페이지 코드의 비트가있다 그것에 대한 참조를 유지할 것임을 나타내는 것처럼 보입니다. 그래서, 제가 언급 한 라인 ([aPlacardView release];
)은 보유 수 0을 가지고 할당 해제되는 aPlacardView
이 될 수 있습니다. self.placardView
이 가리키고 있기 때문에 현재 할당 해제 된 메모리를 가리키며 문제가 발생하지 않습니까?
속성의 개념은 악의가 아니며, Apple이 도입 한 점 표기법입니다 시각. 그것은 구문을 오염시키고 끝없는 혼란을 야기합니다. 개인적으로 나는 많은 속성을 사용하지만, 일반적인 Objective-C 구문을 사용하여 설정하고 가져온다. – JeremyP
예 동의합니다. 그래서 나는 시작하기 위해 악마라는 단어를 괄호 안에 넣었습니다. 나를 위해 점 표기법은 완벽하게 OK입니다. 나는 항상 이것들이 메소드 호출임을 상기시킨다. 그러나 나는 그것이 초심자에게 혼란의 큰 원천이라는 것에 진심으로 동의한다. – Yuji