2011-06-13 3 views
1

인터페이스 작성기에 하위보기가 내장되어 있고 실제 이름을 지정하려는 경우 내보기 컨트롤러에서 UIView 인스턴스 변수를 만드는 것이 유일한 방법입니다 다음이 같은 수행메모리 질문 : 하위보기의 소유권 가져 오기

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
self.moveView=[self.view.subviews objectAtIndex:0];  
self.moveView.backgroundColor=[UIColor redColor]; 
} 

그렇게함으로써를, 지금은보기 계층 구조 내에서의 인덱스 번호를 해결하기보다는 "moveView"기존의 이름을 사용하여이 서브 뷰와 함께 작업 할 수 있습니다.

이것은 (사용자 정의보기 클래스를 실제로 사용하지 않고) 이와 같은 작업을 수행하는 좋은 방법입니까?

@property (nonatomic, retain) IBOutlet UIView * sensitivity; 

에서 : 아마도 쉽게하고 인덱스 번호를 알아낼 필요가 없습니다

또 다른 방법은 단지의 UIView의 @property 함께 IBOutlet을 생성하고 인터페이스 빌더에 그를 할당하고이 일 것으로 보인다 @interface.

그러나이 "속성"의 "유지"품질이 내 UIView가 본질적으로 메모리를 두 배로 사용한다는 것을 의미하는지 알고 싶습니다. 인터페이스 작성기 UIView도 메모리에이 항목을 저장하지 않으므로? 아니면 IB에서 이것을 연결하면 실제 UIView 인스턴스가 하나만 있어도 동일하게 만들 수 있습니까?

답변

2

예, IBOutlet은 색인을 기준으로 하위보기를 참조하는 것보다 훨씬 좋은 아이디어입니다.

retain은 속성 집합에 객체를 복사하지 않습니다. 즉, copy 속성을위한 것입니다. 객체의 보유 수를 "소유권 주장"으로 증가시킵니다. 아직 읽지 않은 경우 iOS Memory Management Guide을 읽는 것이 좋습니다. 또한 section on nibs에 유의하십시오.