実装で#pragma markを使用してメソッドをグループに整理しています。しかし、メソッド実装コードがこのメソッドを呼び出すコードの下に表示され、「インスタンスメソッドが見つかりません」という警告が表示されることがあります。私がプライベートメソッドを使用しているときに起こります。それを修正するには?プライベートメソッドの前方宣言を作成するには?
答えて
最も簡単な方法は、匿名のカテゴリを使用することです。あなたの@implementation
前に、あなたの.m
ファイルの先頭に次のようなものを追加します。
@interface MyClass()
- (void)myPrivateMethod;
@end
この場合、実装ファイル内のクラス拡張を使用してこれらのメソッドを定義します。このようにして、ヘッダファイルにはあなたの 'public' APIが定義されており、実装ファイルには擬似プライベートメソッドの定義が含まれています。
YourClass.m
@interface MyClass()
- (void)myPrivateMethod;
@end
@implementation MyClass
- (void)myPublicMethod
{
// This will not throw an error or warning
[self myPrivateMethod];
}
- (void)myPrivateMethod
{
// Do something
}
@end
名前付きカテゴリを使用することの欠点は、対応する '@implementation MyClass(PrivateMethods)'が必要なことです。そうでないと警告が表示されます。匿名カテゴリを使用してください。 – DarkDust
プライベートクラス拡張の推奨構文は '@interface MyClass()'です。 –
あなたClass.m実装ファイルでは、あなたが先頭にインタフェース部を追加し、そこにプライベート関数を宣言することができます。
@interface YourClassName (private)
-(void)aPrivateMethod:(NSString*)aParameter;
...
@end
@implementation YourClassName
...
@end
- 1. Ruby - プライベートメソッドのインライン宣言
- 2. 前方宣言
- 3. 前方宣言
- 4. 前方宣言
- 5. レシーバータイプは前方宣言
- 6. C前方宣言
- 7. テンプレートクラスの前方宣言を達成する方法
- 8. 前方宣言とプロトタイプ宣言 "宣言"を呼び出すだけですか?
- 9. テンプレートポインタを前方-宣言
- 10. auto_ptrを前方宣言
- 11. レコードタイプの前方宣言
- 12. Objective-C:プライベートメソッドを宣言する必要がありますか?
- 13. 前宣言はC
- 14. 正しい前方宣言
- 15. 前方宣言:構文エラー
- 16. XAMLでWindowの前にリソースを宣言する方法は?
- 17. クラスの前方宣言とクラスの宣言の違いは何ですか?
- 18. NSImageでは、前方宣言エラー
- 19. npmモジュールの宣言を作成するには?
- 20. Cで前方宣言を使用するには?
- 21. 前方宣言の副作用を持つtypedef?
- 22. C++クラスの前方宣言の欠点?
- 23. Pythonの前方宣言の内部クラス
- 24. C++のtypedefの前方宣言
- 25. 別のファイルの前方宣言C++
- 26. C++でのlambdaの前方宣言
- 27. Cの構造体の前方宣言?
- 28. pdoで宣言を作成するには
- 29. 財団クラスメッセージ前方宣言エラーです
- 30. Objective-Cの前方宣言enum
+1 3つの同様の回答のうち、あなたのものが最も正しいです。 –