2017-09-03 8 views
0

서브 클래 싱하려는 프로젝트에 많은 많은 수의 많은 UILabels이 있습니다. 오히려 일 내 UILabel 서브 클래스로 설정 IB에 개별적으로 모든 겪고 지출보다는 프로그래밍 방식을 설정할모든 UILabels를 프로그래밍 방식으로 서브 클래스로 설정합니다.

여기 검사 : 추측의 How to programmatically set custom class?

커플 시도 : UILabel_setClass(self.contentView, [MyLabel class]); - 암시 적 선언 오류

및 :

 Class lbl = [[MyLabel alloc] init]; 

     for (id view in [self.contentView subviews]) { 
      if ([view isKindOfClass:[UILabel class]]) { 

       //....sub it here? 

       } 
     } 

답변

-1

우선, 객체 클래스를 변경하는 것은 매우 나쁜 생각입니다. 그것은 냄새 코드 중 하나입니다. 나중에 새 개발자가 기본 UILabel 클래스를 사용하면 이상한 오류가 발생할 수 있습니다. 런타임 (Runtime) - 목표 C의 가장 좋고 나쁜 특징입니다. 악의적 인 손에 숨겨진 버그를 생성 할 수 있습니다. 매우 신중하게 사용하십시오. 두 번 생각해보십시오. 프로젝트에서 정말로 필요합니까? 그리고 더 나은 - 귀하의 코드를 명시 적으로 쓰기, 디자인 패턴 등을 사용하십시오.

질문에 왜 개체 클래스를 변경해야하는지 명확하지 않습니다. 모양을 변경해야하는 경우 UIAppearance을 사용하십시오. 기능을 확장해야하는 경우 Extensions을 사용하십시오.

+0

PDF로 인쇄 할 때 문제가 발생하여 고유 한 환경 및 UIAppearance가 작동하지 않습니다. 디자인 패턴 등 현실 세계에서 기존 프로젝트에서 작업하지 않는 경우 괜찮아요 시나리오 – JSA986