九九热这里直有精品,1区二区三区在线播放,玖玖爱在线观看资源,国产aⅴ综合网,午夜福利男女,日本亚洲欧美三级,日韩无码黄色导航,内射少妇13区,中文字幕高清网

您身邊的軟件定制專家--9年開發(fā)經驗為您護航

18678812288
0531-88887250

關于Objective C的私有函數(shù)

文章作者:濟南軟件開發(fā) 時間:2016年12月20日

(1)很多從其他語言(例如C++)轉到objective c的初學者,往往會問到一個問題,如何定義類的私有函數(shù)?這里的“私有函數(shù)”指的是,某個函數(shù)只能在類的內部使用,不能在類的外部,或者派生類內部使用。事實上,Objective C中可以定義類的私有變量,但由于objective c是動態(tài)語言,因此本質上是不存在私有函數(shù)的。但是,也可以用一些機制,來實現(xiàn)類似其他語言中私有函數(shù)的效果。

 

 

(2)一般來說,可以使用兩種方式來實現(xiàn)。

 

 第一種:只在.m文件中實現(xiàn)該函數(shù),不在.h文件中聲明,這樣是最簡單的方式。

 

 

.h文件

@interfaceMyClass 

{

    // My Instance Variables

}

- (void)myPublicMethod;

@end

 

 .m 文件:

@implementationMyClass

- (void)myPublicMethod 

{

    // Implementation goes here

}

- (void)myPrivateMethod 

{

    // Implementation goes here

}

@end

 

上面的myPrivateMethod函數(shù)只在m文件中實現(xiàn)了,沒有在h文件中聲明,那么外部就不能使用:[obj  myPrivateMethod]的方式調用,在派生類中也不能使用[super myPrivateMethod] 或者[self myPrivateMethod]的方式來調用。

 

 

 

  第二種:在m文件中加上一個oc extension,在里面聲明需要的私有函數(shù)。

 

 

 .h 文件:

@interfaceMyClass

{

   // My Instance Variables

}

- (void)myPublicMethod;

@end

 

 .m 文件:

@interfaceMyClass()

- (void)myPrivateMethod;

@end

 

@implementationMyClass

- (void)myPublicMethod 

{

    // Implementation goes here

}

- (void)myPrivateMethod 

{

    // Implementation goes here

}

@end

 

以上兩種方式,功能完全一樣,區(qū)別僅僅在于,團隊開發(fā)時,后面一種的代碼可讀性更好,所以一般還是推薦后面一種方式。

 

(3)前面已經提到,對于Objective C來說,真正意義上的私有函數(shù)是不存在的。因為即使用上述的方法,不在頭文件中聲明函數(shù),外部也可以使用objc_msgSend或者performSelector來調用這個函數(shù)。 比如上面的myPrivateMethod,在類的外部可以直接使用[obj performSelector:@selector(myPrivateMethod)]… 來調用。有人說performSelector只能傳一個參數(shù),那么使用objc_msgSend(obj, @selector, …),就可以傳N個參數(shù)了。所以說,用上面的機制,可以實現(xiàn)類似其他語言中“私有函數(shù)”的效果,但并不能完全保證這個函數(shù)是私有的。

 

備注:有人提到,可以用一個外部的block來實現(xiàn)私有函數(shù),但是這其實意義不大,因為在外部的block里面是不能訪問類的self的,已經不算是成員函數(shù)了。


想要了解更多詳情歡迎來電咨詢18678812288
登陸網址:m.h6244.cn。
聯(lián)系人:王經理。

北安市| 石林| 周口市| 镇赉县| 铅山县| 郧西县| 施秉县| 丽江市| 上栗县| 多伦县| 嵩明县| 安远县| 万山特区| 钦州市| 涿州市| 邓州市| 关岭| 普陀区| 临沂市| 巫溪县| 奉节县| 久治县| 基隆市| 双江| 大港区| 托里县| 英吉沙县| 景德镇市| 云霄县| 佛教| 吕梁市| 班玛县| 玉林市| 常宁市| 葫芦岛市| 瓮安县| 天津市| 宝山区| 江陵县| 开远市| 策勒县|