2012-11-10 2 views
0

UILabel을 프로그래밍 방식으로 만드는 경우 나중에 릴리스해야합니까? 예를 들어, iOS UILabels을 동적으로 생성 - 출시해야합니까?

UILabel *label = [[UILabel alloc] initWithFrame:...]; 
[self.view addSubView:label]; 
[label release]; // <-- is this needed? 

나는 릴리스 라인을 포함 this thread을 찾았지만, 나는이 새로운 아이폰 OS 버전에서 다르게 작동을 이해합니다.

읽어 주셔서 감사합니다.

답변

4

예 ARC를 사용하지 않는 한 해제해야합니다. 당신이 addSubView을보기가 레이블을 retain 할 때 alloc 당신의 수를 유지이 경우
1.
입니다 : 수를 유지하는 것은 당신이 당신의 alloc을 균형을 release을 자유롭게 그 시점에서 2
그래서입니다 보유 수는 이제 1이됩니다.
그러나 1은 own이고, self.view입니다. 더 이상 필요하지 않을 때 릴리스를 호출합니다.
라벨 보관 횟수가 0이되면 deallocated이되며 메모리는 무료입니다.

1

프로젝트가 ARC (자동 참조 횟수)를 사용하도록 설정되어 있다면 release에 전화를 추가하는 중 오류가 발생합니다. 해당 줄을 추가하는 동안 오류가 발생하지 않으면 ARC를 사용하지 않고 메모리 누수를 방지하기 위해 해당 줄이 필요합니다.