2012-02-04 43 views
5

Tôi đang nghiên cứu phát triển ObjC và iOS. Mọi thành phần mà tôi sử dụng trong các ứng dụng của tôi đều được tạo theo chương trình (dạng xem, nút, nhãn, v.v.).Sử dụng void thay vì IBAction làm kiểu trả về của phương thức

Đây là mã của tôi

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


-(void)someAction 
{ 
logic 
} 

tôi nhận thấy rằng tôi có thể sử dụng khoảng trống thay vì IBAction như kiểu trả về của selector. Đây có phải là cách tiếp cận chính xác không? Có thể có bất kỳ cạm bẫy nào không?

+0

bản sao có thể có của [IBOutlet và IBAction] (http://stackoverflow.com/questions/1643007/iboutlet-and-ibaction) –

Trả lời

17

Sử dụng IBAction cho Xcode biết rằng bạn muốn phương thức này khả dụng dưới dạng phương thức hành động trong Trình tạo giao diện. Đó là hiệu ứng duy nhất. Nếu không, nó giống hệt với void. Trên thực tế trong UINibDeclarations.h bạn sẽ tìm thấy điều này:

#define IBAction void 

Sử dụng IBAction là một ý tưởng tốt ngay cả khi bạn không sử dụng file ngòi, bởi vì nó là một tín hiệu để người đọc (bạn hoặc đồng nghiệp) mà bạn dự định sử dụng phương thức làm hành động của điều khiển giao diện người dùng.

+0

Không mở một chủ đề mới. Tôi thích tạo mọi thứ theo chương trình hơn là sử dụng IB. Có thể nghe có vẻ điên rồ, nhưng cách tiếp cận đó là dễ nhất đối với tôi. Họ có bất kỳ khuyết điểm nào khi sử dụng cách tiếp cận đó không? – objlv

+4

Có, có khuyết điểm. Sử dụng hoặc không sử dụng IB có xu hướng là một đối số tôn giáo. Tôi sử dụng nó rất nhiều. Hầu hết các ứng dụng mẫu của Apple đều sử dụng nó. Tôi cho rằng những người không sử dụng nó thích viết nhiều mã soạn sẵn và trải qua nhiều chu kỳ biên dịch-biên dịch điều chỉnh các tọa độ xem, màu sắc và kích thước phông chữ trong mã của chúng. –

+0

Trong trình soạn thảo của Xcode, có một biểu tượng nhỏ để cho biết liệu nó có được kết nối hay không. Sử dụng IBAction/IBOutlet cho phương pháp/thuộc tính không phải IB có thể gây nhầm lẫn. Nhưng dù sao, đó là một vấn đề của hương vị. – hoshi

Các vấn đề liên quan