2011-12-06 22 views
2

템플릿 "MasterDetail"응용 프로그램은 IBOutlet 속성을 strong 한정자가있는 DetailViewController.h에 씁니다. iTunesU에서 스탠포드 CS193 수업에ARC의 IBOutlet 및 평생 한정자

@property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel; 

동안 (제 2 시간 14:30) 그들은 라벨이 이미 윈도우에 의해 만들어 그것에 강한 포인터를 가지고 말을 weakIBOutlet을 설정합니다.

이제 내 질문은 Label 및 Button과 같은 IBOutlet 용 저장 공간을 선언해야하는 것입니다. 약한 것을 사용하는 것이 맞습니까? iOS4에 있다면 unsafe_unretained를 사용 하시겠습니까?

편집 -----

나는 강하거나 약에 대한 답을 찾을 ... 주요 규칙은 다음과 같습니다

  • 사용 strong에 대한
  • 사용 weak XIB의 최상위 요소 당신은 확인할 수 있습니다

라벨 버튼 등과 같은 하위 요소 ... documentation
,536,하지만 여전히 iOS 4에 대한 정보를 찾을 수 없습니다.

답변

4

글쎄, 기본적으로 MRC와 같은 경우입니다.

IBOutlets는 일반적으로 컨트롤러의 뷰 계층 구조 내에 있으며 부모 뷰에 의해 암시 적으로 유지됩니다. assign (MRC) 또는 weak 또는 unsafe_unretained (ARC)을 사용할 수 있습니다. 모든 경우에 뷰 계층 구조에서 객체를 제거하면 포인터가 무효화됩니다. 유일한 차이점은 MRC 및 ARC 4.0에서는 포인터가 자동으로 nil로 설정되지 않는다는 것입니다. 여전히 메모리 주소가 있지만 주소가 유효하지 않습니다. 어쨌든 포인터를 더 이상 사용하면 안됩니다.

개체가보기 계층 구조의 일부 (일반적으로 xib의 모든 최상위 요소 또는 계층 구조에서 동적으로보기를 제거하고 유효하지 않게하려는 경우)가 아니더라도 개체를 사용하고 싶을 때마다 retain 또는 strong 지정자를 사용합니다.

많은 예제는 모든 IBOutlets에 strong을 사용하며 오류가 아닙니다. 그것은 단지 필요하지 않습니다.