2012-02-04 2 views
5

ObjC 및 iOS 개발을 연구하고 있습니다. 내 앱에서 사용하는 모든 구성 요소는 프로그래밍 방식으로 생성됩니다 (보기, 버튼, 라벨 등).대신 void를 사용하십시오. 메서드의 반환 유형으로 IBAction을 사용합니다.

여기에 내가 선택의 반환 형식으로 대신 IBAction를 무효를 사용할 수 있음을 알 내 코드

... 
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[self.btn addTarget:self 
        action:@selector(someAction:) 
     forControlEvents:UIControlEventTouchDown]; 
.... 


-(void)someAction 
{ 
logic 
} 

입니다. 이것이 올바른 접근 방법입니까? 함정이있을 수 있습니까?

+0

가능한 중복 [IBOutlet 및 IBAction] (http://stackoverflow.com/questions/1643007/iboutlet-and-ibaction) –

답변

17

사용 IBAction은 Interface Builder에서 메소드를 메소드로 사용할 수있게하려는 Xcode에게 알려줍니다. 그것이 유일한 효과입니다. 그렇지 않으면 void과 동일합니다. UINibDeclarations.h에서 사실이를 발견 할 것이다 :

IBAction를 사용
#define IBAction void 

당신이 펜촉 파일을 사용하지 않는 경우에도 좋은 생각, 그것은 당신이 의도 한 독자 (당신 또는 동료)에 신호이기 때문에 이 메소드를 UI 컨트롤의 액션으로 사용하십시오.

+0

새 주제를 열지 마십시오. 나는 IB를 사용하여 프로그래밍 방식으로 모든 것을 생성하는 것을 선호한다. 어쩌면 미친 듯이 들리 겠지만 그 접근법은 나에게 가장 쉽습니다. 그 접근법을 사용하는 것이 어떤 죄수입니까? – objlv

+4

예, 단점이 있습니다. IB를 사용하거나 사용하지 않는 것은 종교적인 주장입니다. 나는 그것을 많이 사용한다. Apple의 샘플 앱 대부분이이를 사용합니다. 나는 이것을 사용하지 않는 사람들이 많은 보편적 인 코드를 작성하고 많은 편집 - 컴파일 - 실행주기를 통해 코드의 뷰 좌표, 색상 및 글꼴 크기를 조정하는 것을 선호한다고 가정합니다. –

+0

Xcode 에디터에는 연결 여부를 나타내는 작은 아이콘이 있습니다. 비 IB 방법/속성에 대해 IBAction/IBOutlet을 사용하면 혼동을 줄 수 있습니다. 그러나 어쨌든, 그것은 맛의 문제입니다. – hoshi

관련 문제