Objective-C无私有方法问题
PHP中文网
PHP中文网 2017-04-22 08:59:28
0
4
458

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

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(4)
PHPzhong

Adalah disyorkan untuk melihat http://blog.sunnyxx.com/2014/04/13/objc_dig_interface/

Ty80

obj c tidak mempunyai kaedah persendirian yang ketat Ini ditentukan oleh mekanisme panggilan kaedahnya. Memanggil kaedah objek dalam obj c sebenarnya menghantar mesej kepada objek dan objek akan melihat sama ada ia boleh mengendalikannya. Jika mesej ini boleh diproses, kaedah yang sepadan akan dipanggil untuk melaksanakannya. Jika ia tidak dapat diproses, pengecualian akan dilemparkan Ini sepenuhnya tindakan masa jalan. Jadi, walaupun kaedah tidak diisytiharkan dalam fail pengepala, ia masih boleh dipanggil pada masa jalan, dan ia tidak berbeza daripada jika anda mengisytiharkannya dalam fail pengepala Paling banyak, Xcode akan memberi anda amaran.

Begitu juga dengan kaedah statik, kerana kelas itu sendiri juga merupakan objek. Memanggil kaedah statik bermakna menghantar mesej ke objek ini.

Apa yang dipanggil kaedah persendirian (tidak ditakrifkan dalam fail pengepala), saya secara peribadi berpendapat lebih merupakan kekangan yang diletakkan oleh pengaturcara pada diri mereka Sebagai contoh, jika mereka tidak diletakkan dalam fail pengepala, ini bermakna mereka tidak terdedah. Itu sahaja kaedahnya tidak dijangka dipanggil dari luar, walaupun anda masih boleh menggunakannya jika anda mahu.

Rujuk artikel ini, yang sangat terperinci dan jelas: http://blog.jobbole.com/45963/

刘奇

Ya, kategori dan sambungan dalam antara muka adalah bersamaan dengan kaedah peribadi.
Kategori: nama kelas + kaedah sambungan; Anda boleh mencarinya.

洪涛

Semua kaedah yang diisytiharkan dalam .h adalah awam secara lalai.
Jika anda mahu ia menjadi peribadi, tidak perlu mengisytiharkannya dalam .h, cuma laksanakan terus dalam .m. Adalah disyorkan bahawa semua kaedah persendirian bermula dengan p_, cth:
- (kosong) p_myFirstMethod
{
//todo..
}

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan