0

こんにちは私はウェブからのサンプルコードを通してIOSプログラミングを勉強しています。すでにh.fileが含まれているため、このコードから何かがおかしいことがわかりましたが、m.file内にもh.fileコードが含まれています。

 @interface Manager : NSObject {
}

+(void) goMenu;

これはhです。ファイル

#import "Manager.h"

@interface Manager ()
+(void) go
+(void) wrap
@end


@implementation Manager
....

これがm.fileの始まりです。

私のような初心者にとって、このような状況は私を本当に混乱させます。誰かが私に何が起こっているのか説明してください。

4

6 に答える 6

2

@interface Manager ()実装ファイルでは、クラス拡張機能として知られています。

これは、開発者が非公開にしたいメソッドやプロパティなどを追加するためによく使用されます。

于 2012-08-13T11:48:25.187 に答える
1

.m ファイルに表示されるのはクラス拡張です。クラス拡張とカテゴリの詳細については、こちらをご覧ください。

于 2012-08-13T11:49:36.680 に答える
0

これはクラス拡張です。プライベート メソッドやインスタンスを使用することもできます。詳細については、こちらのリンクを参照してください。

于 2012-08-13T12:06:45.667 に答える
0

.m ファイル内のインターフェイスはプライベートと見なされManager、他のクラスでクラスを参照するときに表示されません。

ただし、(と)の間に「プライベート」を追加しない限り、他のクラスから呼び出すことができると思います。(それを作る@interface Manager (Private))...しかし、クラスマネージャが と呼ばれるそのようなメソッドを実装していない可能性があるという警告が表示されwrapます。

于 2012-08-13T11:48:23.620 に答える
0

ファイル内@interface Manager ()のは、ほとんどの場合、プライベート メソッドとプロパティを宣言するために使用されます。.m

.h で宣言されているものはすべて、(ほとんどの場合) パブリック メソッドとプロパティです。しかし、公開されていないメソッドやプロパティが必要な場合もあります。

Objective-C を使用してもこれらのメソッドとプロパティを呼び出すことができることに注意してください。コンパイラは、呼び出しがメソッドに応答しない可能性があるため、そのようなメソッドの呼び出しが機能しない可能性があるという警告を出します。

于 2012-08-13T11:47:43.183 に答える
0

.h ファイルに含まれるすべての関数は、他のクラスにとっても興味深い可能性があります。これらは、すべての人に表示される公開インターフェイスです。他のクラス ファイルは .h ファイルを #import できるため、すべてのパブリック関数を認識できます。

一方、.m ファイル内の関数はプライベート インターフェイスです。最近まで、すべてのメソッドは、使用する前に宣言する必要がありました (また、概要を簡単に把握しておくと便利です)。この構成を使用することで、開発者は .m ファイルの先頭でメソッドの存在を宣言し、ファイル全体でメソッドを使用できるようにしました。.m ファイルは他のファイルにインポート/インクルードされないため、外部からは見えません。

ただし、このメカニズムはいかなる種類のセキュリティメカニズムによっても強制されず、必要に応じてオーバーライドできることに注意してください。

于 2012-08-13T11:48:10.377 に答える