如题,Objective-C无私有方法是什么意思?确实我在.h文件中声明的所有方法除了静态方法就是public方法,但是我再.m文件中随便声明的方法,子类是看不到的,当然performselector还是可以执行的,但是这样算不算是一种私有方法呢?
PHP中文网2017-04-22 09:01:28
obj c には厳密なプライベート メソッドがありません。これは、obj c 内のオブジェクトの特定のメソッドを呼び出すことによって、実際にオブジェクトにメッセージが送信され、オブジェクトはそのメッセージを処理できるかどうかを確認します。処理できる場合、対応するメソッドが呼び出されて実装されます。処理できない場合、これは完全に実行時アクションです。したがって、メソッドがヘッダー ファイルで宣言されていない場合でも、実行時に呼び出すことができます。これは、ヘッダー ファイルでメソッドを宣言した場合と何ら変わりません。Xcode は警告を表示します。
クラス自体もオブジェクトであるため、静的メソッドの呼び出しもこのオブジェクトにメッセージを送信することを意味します。
いわゆるプライベート メソッド (ヘッダー ファイルに定義されていない) は、プログラマーが自分自身に課す制約のほうが多いと思います。たとえば、ヘッダー ファイルに配置されない場合は、公開されないことを意味します。このメソッドは外部から呼び出すことは望ましくありませんが、必要に応じて使用することもできます。
この記事を参照してください。非常に詳細かつ明確です: http://blog.jobbole.com/45963/
怪我咯2017-04-22 09:01:28
はい、インターフェイス内のカテゴリと拡張機能はプライベート メソッドと同等です。
カテゴリ: クラス名 + 拡張メソッド; 拡張子: @実装領域
検索できます。
PHP中文网2017-04-22 09:01:28
.h で宣言されたすべてのメソッドはデフォルトでパブリックです。
プライベートにしたい場合は、.h で宣言する必要はなく、.m で直接実装するだけです。すべてのプライベート メソッドは p_ で始めることをお勧めします。例:
- (無効) p_myFirstMethod
{
//todo..
}