2011-02-17 7 views
0

목표 C, 객체 공개에 관한 질문

address = [[NSString alloc] initWithData:addressData encoding:NSASCIIStringEncoding]; 

그런 다음 사용을 마치면 [주소 발표]와 같이해야한다는 것을 알고 있습니다. "alloc"은 "address"변수의 참조 카운트가 증가하므로

 [address release] 

하지만

 NSData *addressData = [NSData dataWithBytes:buf length:address_len]; 

같은 것을 할 필요가 있는지 확신 할 수 없습니다. 이 문장에서 어떤 "alloc"도 ​​보지 못한다. 내가 이것을 한 후에도 여전히 [addressData release]를 할 필요가 있는가?

미리 감사드립니다 ...

답변

1

에 설명했다. 객체를 가져 오는 방법이 alloc이고 단어가 copy이거나 객체가 retain 인 경우 객체를 릴리스 (또는 자동 해제)하기 만하면됩니다.

+1

새로운 것을 잊지 마세요 ... –

+1

'new'의 사용은 낙심되어 거의 보이지 않습니다 ('alloc' /'init ...'처럼 유연하지 않으므로). – DarkDust

+0

잡았어 정말 고마워 !! – codereviewanskquestions

0

두 번째 예에서는 릴리스를 수행 할 필요가 없습니다. 일반적인 규칙은 alloc, retain 또는 copy를 호출하면 릴리스에 대한 책임이 있다는 것입니다.

0

아니요, 두 번째 성명서를 발표 할 필요가 없습니다. alloc, copy, new 인 경우 release 개체를 사용해야합니다.

Objective C Memory Management for Lazy People에는 release 개체에 대한 유용한 정보가 있습니다.