2011-10-26 1 views
0

많은 수의 init... 메서드 (UITableViewCell)가있는 클래스가 있습니다. 내 확장 기능에는 추가 속성이있어서 색상과 같은 다양한 셀 속성을 조정합니다. 속성 변경 처리에는 두 가지 옵션이 있습니다.초기화 메서드에서 속성을보기 위해 KVO 설정

  1. 재정의 속성 세터, 전달 된 값을 저장 한 후 색상 등
  2. 재정의 모든 inits을 설정하고 KVO는 설정에 개인 방법 색상 등을 호출하는 속성에 대해보고 추가

항목 # 1이 가장 간단하게 적용되는 것으로 보입니다.하지만 Apples 지침에 따라 setter 코드를 수동으로 입력해야합니다.

항목 # 2는 처음에는 멋진 보일러 장소를 추가 할 필요가 없기 때문에 좋지만, 모든 inits를 재정의해야하므로 코드가 더 많이들 것입니다.

다른 대안이 있습니까?

답변

2

designated initializer(s) 만 덮어 써야합니다. 일반적으로 대부분의 클래스에는 지정된 초기화 도구가 하나만 있으며 <NSCoding>에 해당하는 클래스는 두 개입니다 (두 번째 숫자는 -initWithCoder:).

초기화시 KVO를 설정하면 -dealloc에서 등록을 잊어 버리는 것을 기억해야합니다. 객체가 사라지면 객체는 자동으로 KVO의 등록을 취소하지 않으며 잊어 버리면 같은 주소에 할당 된 객체가 누출 된 KVO 옵서버를 상속받습니다.

+0

감사합니다. 나는 UITableViewCell 클래스를 약간 파헤 치고 4 대신 하나의 init 메소드를 오버라이드해야만하는 것처럼 보인다. – drekka