以下是一些解释自己的示例代码:
MyViewController.h
@interface MyViewController
@property (nonatomic, strong) IBOutlet UIButton *button1;
- (IBAction)button1Touch;
@end
MyViewController.m
@interface MyViewController ()
@property (nonatomic, strong) IBOutlet UIButton *button2;
- (IBAction)button2Touch;
@end
@implementation MyViewController {
IBOutlet UIButton *button3;
}
- (IBAction)button1Touch {
}
- (IBAction)button2Touch {
}
- (IBAction)button3Touch {
}
@end
当我学习如何使用XCode时,所有教程都使用了button1
/ button1Touch
方法。最近我在一个项目中遇到了button2
/ button2Touch
方法。所以我尝试了button3
/ button3Touch
变体,它的效果也很好。
对我而言,button1
/ button1Touch
(通常)是一种糟糕的方法,因为它的内部属性和方法不应被使用过的人使用MyViewController
或扩展它。当然,如果它在MyViewController之外使用,那么可以在这里声明它,但通常我会试图隐藏我不需要显示的所有内容。
所以button2
/ button2Touch
和button3
/ button3Touch
是更好的方法,但我不会真正看到它们之间的区别。如果我没有看到差异,那么我会使用button3
/ button3Touch
方法,因为它不需要匿名扩展且整体更简单。
这就是我的理由。但是,为什么我会使用#1 /#2方法是正确的还是其他原因?
答案 0 :(得分:1)
第二种方法允许你使用@property
(这是第三种方法中不可能的,因为你已经发现我猜,因为编译器会抱怨)。
在类扩展中声明所有私有属性和方法(我们称之为"匿名扩展"),这是更常见的(在我看来更干净)。
我也很好奇如果使用你的第三种方法有更严重的警告 - 如果有人知道请分享。