2016-04-02 22 views
0

は自分自身を説明するためにいくつかのサンプルコードです:IBOutletsとIBActionsはどこに置く必要がありますか?ここ

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アプローチ。最近、1つのプロジェクトでbutton2/button2Touchというアプローチが発生しました。だから私はbutton3/button3Touchバリエーションを試してみました。

私にとってbutton1/button1Touchは内部プロパティとメソッドであり、MyViewControllerを使用するか、それを拡張する人が使用しないでください(一般的には悪い方法です)。もちろん、MyViewControllerの外で使用されている場合は、ここで宣言しても問題ありませんが、通常は表示する必要のないすべてを隠そうとしています。

だからbutton2/button2Touchbutton3/button3Touchが良いアプローチですが、実際には違いはありません。私はその違いが見えない場合は、button3/button3Touchアプローチを使用します。なぜなら、匿名の拡張と全体的な単純化は必要ないからです。

これは私の推論です。しかし、それが正しいのでしょうか、#1 /#2アプローチを使う理由が他にもありますか?

答えて

1

第2のアプローチでは、@propertyを使用することができます(3番目のアプローチでは、コンパイラが不平を言うので、すでにわかっているので、これは不可能です)。

私の意見では、クラス拡張のすべてのプライベートプロパティとメソッド( "匿名の拡張子"と呼んでいます)を宣言する方がより一般的です。

私はまた、あなたの第3のアプローチを使用してより深刻な警告がある場合、誰かが分かち合うことを知っている場合、興味があります。

関連する問題