Objective-C無私有方法問題
PHP中文网
PHP中文网 2017-04-22 08:59:28
0
4
459

如題,Objective-C無私有方法是什麼意思?確實我在.h文件中聲明的所有方法除了靜態方法就是public方法,但是我再.m文件中隨便聲明的方法,子類是看不到的,當然performselector還是可以執行的,但是這樣算不算是一種私有方法呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(4)
PHPzhong

建議看看 http://blog.sunnyxx.com/2014/04/13/objc_dig_interface/

Ty80

obj c沒有嚴格的私有方法, 這是它的方法呼叫機制決定的, 在obj c裡呼叫一個物件的某個方法, 其實就是給這個物件一個訊息, 這個物件看看自己能不能處理這個訊息,如果能處理就呼叫對應的方法實現, 如果不能處理就會拋異常,這個完全是運行時的動作。所以即便一個沒有在頭文件裡顯示聲明的方法, 也可以在運行時被調用, 而且是跟你在頭文件裡聲明了沒有區別, 最多就是在xcode裡會給你一個warning。

靜態方法也是一樣, 因為一個類別本身也是一個對象, 呼叫靜態方法, 也就是給這個對象發送一個訊息。

所謂的私有方法(不定義在頭文件裡),我個人覺得更多的是一種程式設計師們對自己的約束, 比如沒放在頭文件裡, 就是不暴露出去的意思, 就是這個方法是不希望在外面被調用到的, 雖然你想用的話一樣可以用。

參考這篇文章, 說的很詳細清楚: http://blog.jobbole.com/45963/

刘奇

有啊,interface中的類別目和延展就相當於私有方法。
類別目:類別名稱+擴充方法;延展:@implementation區域
你可以去搜尋一下。

洪涛

所有在.h 中聲明的方法,預設都是公開的。
如果想它變成私有的,無須在.h中聲明,直接在.m中實現即中。建議所有私有方法以p_開頭,ex:
- (void) p_myFirstMethod
{
//todo..
}

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板