ホームページ  >  に質問  >  本文

Objective-C无私有方法问题

如题,Objective-C无私有方法是什么意思?确实我在.h文件中声明的所有方法除了静态方法就是public方法,但是我再.m文件中随便声明的方法,子类是看不到的,当然performselector还是可以执行的,但是这样算不算是一种私有方法呢?

PHP中文网PHP中文网2736日前410

全員に返信(4)返信します

  • PHPz

    PHPz2017-04-22 09:01:28

    http://blog.sunnyxx.com/2014/04/13/objc_dig_interface/

    を参照することをお勧めします。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-22 09:01:28

    obj c には厳密なプライベート メソッドがありません。これは、obj c 内のオブジェクトの特定のメソッドを呼び出すことによって、実際にオブジェクトにメッセージが送信され、オブジェクトはそのメッセージを処理できるかどうかを確認します。処理できる場合、対応するメソッドが呼び出されて実装されます。処理できない場合、これは完全に実行時アクションです。したがって、メソッドがヘッダー ファイルで宣言されていない場合でも、実行時に呼び出すことができます。これは、ヘッダー ファイルでメソッドを宣言した場合と何ら変わりません。Xcode は警告を表示します。

    クラス自体もオブジェクトであるため、静的メソッドの呼び出しもこのオブジェクトにメッセージを送信することを意味します。

    いわゆるプライベート メソッド (ヘッダー ファイルに定義されていない) は、プログラマーが自分自身に課す制約のほうが多いと思います。たとえば、ヘッダー ファイルに配置されない場合は、公開されないことを意味します。このメソッドは外部から呼び出すことは望ましくありませんが、必要に応じて使用することもできます。

    この記事を参照してください。非常に詳細かつ明確です: http://blog.jobbole.com/45963/

    返事
    0
  • 怪我咯

    怪我咯2017-04-22 09:01:28

    はい、インターフェイス内のカテゴリと拡張機能はプライベート メソッドと同等です。
    カテゴリ: クラス名 + 拡張メソッド; 拡張子: @実装領域
    検索できます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-22 09:01:28

    .h で宣言されたすべてのメソッドはデフォルトでパブリックです。
    プライベートにしたい場合は、.h で宣言する必要はなく、.m で直接実装するだけです。すべてのプライベート メソッドは p_ で始めることをお勧めします。例:
    - (無効) p_myFirstMethod
    {
    //todo..
    }

    返事
    0
  • キャンセル返事