2009-07-30 3 views
12

UINavigation 컨트롤러가있는 첫 번째 화면에 UITableView이 있습니다.Objective-C의 retainCount는 무엇입니까?

내 첫 번째 화면에서 나는 NSLog(@"Home Screen retain Count=%d",[self retainCount]);이고 viewDidLoad이 호출되면 6을 기록합니다.

이 정보가 맞습니까?

답변

15

retainCount는 개체에서 해결되지 않은 소유권 주장 수입니다.

"alloc"또는 "new"로 시작하거나 "copy"(예 : alloc, newObject 또는 mutableCopy)가 포함 된 메서드를 사용하여 개체를 만들거나 개체를 보내는 경우 개체의 소유권을 가져옵니다 보유 메시지. 이 모든 것은 retainCount를 증가시킵니다.

"release"또는 "autorelease"를 사용하여 소유권을 양도합니다. 이것들은 retainCount를 감소시킵니다.

그러나 retainCount의 값에주의를 기울여서는 안됩니다. 오해의 소지가있는 혼란이 있습니다. 단순히 memory management rules을 따르십시오. 오브젝트에 대한 참조를 유지하고 작업이 끝나고 소유권을 포기해야 할 때 소유권을 가져 오면 문제가 없습니다.

retainCount를 살펴보면 잘못된 방향으로 가고 있으며 혼란 스러울 것입니다.

1

괜찮습니다. 왜 그것이 틀렸을까요?

일반적으로 보유 수에서 사물을 결정하려는 것은 좋지 않습니다. 개체를 유지할 수있는 시간에 대한 규칙은 없습니다. 유일한 규칙은 각 보유가 릴리스와 균형을 맞추어야한다는 것입니다.