4

英語で申し訳ありませんが、心から話させてください:)私が取り組んでいるあるプロジェクトで、興味深い瞬間に気づきました。

*.h ファイルで宣言されたインターフェイス:

@interface FrontViewController : UIViewController
...
@end

*.m ファイルで、別のインターフェイスを見つけました。

@interface FrontViewController()

// Private Properties:
@property (retain, nonatomic) UIPanGestureRecognizer *navigationBarPanGestureRecognizer;

// Private Methods:
- (IBAction)pushExample:(id)sender;

@end

@implementation FrontViewController
...
@end

なぜそれが必要なのですか?そして、ポイントは何ですか?-これは便宜上のものだと思います。はい?

4

2 に答える 2

6

それがクラス拡張です。通常、クラスのプライベート メソッドとプロパティを宣言するために使用されます。

ここでそれについて読んでください

于 2012-03-06T20:00:14.490 に答える
3

それがクラス拡張です。ソースにアクセスできない場合でも、クラスの「プライベート」メソッドとプロパティを宣言できます。主な用途は、これらのメソッドをインターフェイスの一部として公開しないことです。ほとんどの言語とは異なり、これらのメソッドは実行時に検出可能であるため、これらの値は IDE のオートコンプリートにあり、クラスのコンシューマーが非表示のメソッドを呼び出すのを防ぐことにはありません。そのため、private を引用符で囲みます。宣言なしで実装内のメソッドを単純に定義することは可能ですが、その場合、メソッドが使用されるすべての場所の上に実装する必要があります。それらを拡張子として宣言すると、この問題が回避されます。

拡張機能に名前が付けられている場合、それは、クラスの実装を複数のファイルに配布するために使用できるカテゴリになります。

于 2012-03-06T20:09:11.447 に答える