두 가지 시나리오에서 어떤 코드가 모범 사례이며 그 이유는 무엇입니까?자동 릴리스 vs. 릴리스
오토 릴리즈
loginButton = [[[UIBarButtonItem alloc] initWithTitle:@"Login"
style:UIBarButtonItemStylePlain
target:self
action:@selector(loginButtonClicked:)]
autorelease];
self.navigationItem.rightBarButtonItem = loginButton;
또는
출시하여 예를 들어
loginButton = [[UIBarButtonItem alloc] initWithTitle:@"Login"
style:UIBarButtonItemStylePlain
target:self
action:@selector(loginButtonClicked:)];
self.navigationItem.rightBarButtonItem = loginButton;
[loginButton release];
iPhone과 같은 메모리가 부족한 장치에서는 가능한 경우 명시 적으로 해제하는 것이 좋습니다. 또한 명시 적 릴리스는 개체의 수명을 제어 할 수 있으므로 이상한 EXC_BAD_ACCESS 오류를 쉽게 디버깅 할 수 있습니다. –
@Alex,이 경우 문자 그대로 아무런 차이가 없습니다. 개체는 생성 직후 보유됩니다. 일어날 모든 일은 참조 카운트가 하나씩 감산 될 것입니다. 누가 그걸 즉시 또는 나중에 언젠가는 발생하는지 신경 쓰시겠습니까? –
autorelease 풀이 해제되기 전에 self.navigationItem.rightBarButtonItem을 절대로 재 할당하지 않으면 차이가 없습니다. – JeremyP