2

この質問は何よりも好奇心です。しかし、私は現在、すべてのプライベート メソッドを最初に@implementationmy.m ファイルに配置して、.m ファイルにそれらのメソッド用に別のカテゴリを作成しないようにしています。他のメソッドが呼び出す前にプライベート メソッドが実装されていれば、すべて問題ありませんでした。宣言されていないメソッドを実装前に呼び出そうとすると、Xcode が警告してくれたのをはっきりと覚えています。少なくとも、できると思います。今、私は自分の正気を少し疑い始めています.Xcodeは、実装が@implementation実装の前にある場合でも、宣言されていないメソッドの実装が 内のどこかにある限り、宣言されていないメソッドを呼び出すことができるようになりました

これは最近の変更ですか、それとも古い「C」の制限からメソッドの順序を構成しているのでしょうか?

Xcode の現在の動作では、プライベート メソッドのカテゴリを作成する必要はないようです。個人的には、これはかなりいいと思います。

編集:Xcode 4.3.1を使用しています

4

1 に答える 1

1

どうやらあなたは正しいです。xcode 4.2.1 では警告が発行されますが、4.3.1 では発行されません。

@implementation MyClass


- (void) callMyPrivateMethod {
    [self myPrivateMethod];   //<--- xcode 4.2.1 issues a warning here. 
    return;
}

- (void) myPrivateMethod {
    return; 
}

@end

(「返品」の必要がないことは知っていますが、私はこの点で少し古くなっています。)

ただし、どちらのバージョンでも適切にビルドされ、メソッド名をタイプミスしない限り実行されます。

于 2012-03-10T18:51:52.170 に答える