2013-02-24 2 views
0

나는 iOS 용 Objective-C를 배우려고합니다. 나는 이것을 연구하려고 노력했지만 올바른 키워드를 사용해서는 안된다.많은 대신에 하나의 방법을 사용합니다.

나는 Label1이라는 레이블이 여러 개 있으며 Label1, Label2 등이 있습니다. 기본적으로 Label # 변경을 제외하고는 똑같은 모양의 코드가 있습니다. 한 가지 방법을 만들고 그 번호를 전달하고 앱을 크게 축소 할 수 있습니까?

답변

1

아마도 NSArray 또는 다른 유형의 컬렉션에 이러한 개체가 있어야합니다. 그러면 내용을 반복하면서 각 요소에 대해 동일한 작업을 수행 할 수 있습니다.

+0

감사합니다. 배열이 아닌 '또는 다른 유형의 컬렉션'이라고 말하면 다른 유형의 컬렉션은 무엇입니까? – tcison

0

이러한 레이블의 공유 동작을 추상화하는 새로운 클래스 인 CisonLabel을 정의 해보십시오. CisonLabel은 컨트롤과 관련 데이터를 보유합니다.

- (void) update; // sets the label text, based on the identifier 

DRiis에서 알 수 있듯이, 당신이 collectionm 아마도있는 NSArray의 모든 CisonLabels를 수집 할 수 있습니다 그래서 당신은 CisonLabel 같은 방법이있을 것입니다

CisonLabel *label1=[CisonLabel for: self.labelControl1 withIdentifier: 1]; 
    CisonLabel *label2=[CisonLabel for: self.labelControl2 withIdentifier: 2]; 

을 말할 것입니다.

- (void) updateLabels: (NSArray*) theLabels 
{ 
    for(CisonLabel *label in theLabels) [label update]; 
} 

당신의 본능은 소리가 나옵니다. 공유 된 행동을 한 클래스에 추상화시키고 자신을 반복하지 마십시오.

+0

대단히 고마워요.하지만 답장으로 조금 혼란 스럽네요. 첫 번째 메소드는 하나의 레이블을 업데이트하고 두 번째 메소드는 모든 레이블을 업데이트합니다. 그리고 첫 번째 메도 드에서 식별자가 이해 되는가? 호출 할 때 매개 변수처럼 메서드를 보냅니 까? 둘째, 라벨이 모두 새로운 클래스에 있기 때문에 자동으로 메소드 'update'를 모두 수행합니까? 명확히하십시오. – tcison

관련 문제