最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解 objective-c中interface與protocol的作用

 更新時(shí)間:2017年05月26日 11:34:57   投稿:lqh  
這篇文章主要介紹了詳解 objective-c中interface與protocol的作用的相關(guān)資料,需要的朋友可以參考下

詳解 objective-c中interface與protocol的作用

以前對Objective-C中的interface,即頭文件的作用一直不太清楚。最近看了一些文章,再加上自己的試驗(yàn),對頭文件的作用稍有了解。

在我看來,頭文件的作用是,定義對外的接口。

然而,它的作用也只有這個而已。頭文件無法保證對外接口一定會被實(shí)現(xiàn)。

根據(jù).h文件是否定義方法、.m文件是否實(shí)現(xiàn)方法,可以分為三類:

第一類是.h文件定義方法,.m文件也實(shí)現(xiàn)了方法,這是最common的做法,也是最沒有問題的做法。

第二類是.h文件定義方法,但.m文件沒有實(shí)現(xiàn)該方法。此時(shí).m文件的@implementaion代碼會提示“imcomplete implementation”,意思是頭文件定義的方法和變量,沒有被完全實(shí)現(xiàn)。

比如:.h文件里這樣定義:

@interface Test : NSObject{} 
 
-(void)hello; 
 
@end 

但是在.m文件里沒有實(shí)現(xiàn)這個方法。在外部,我們可以調(diào)用這個方法,它在編譯時(shí)沒問題,但在運(yùn)行時(shí)會出現(xiàn)“unrecognized selector sent to instance”錯誤。

第三類是.h文件沒有定義,但.m文件里有這個方法。

比如,在.m文件里這樣實(shí)現(xiàn):

#import "Test.h" 
 
@implementation Test 
 
-(void)hello{ 
  NSLog(@"hello world!"); 
} 
 
@end 

這時(shí),hello()這個函數(shù)相當(dāng)于私有函數(shù),我們只可以在類中用[self hello]調(diào)用,而不能在外部調(diào)用。

因此我覺得,objective-c中的頭文件,只是為了編譯時(shí)更方便而已,它并不是真正的interface。

相對而言,protocol才算是真正意義上的interface,它的意義和Java中的接口差不多。

protocol的方法分兩種類型,一類是必須實(shí)現(xiàn)的,一類是不一定實(shí)現(xiàn)的。不一定實(shí)現(xiàn)的方法其實(shí)和.h文件里定義的差不多。而一定要實(shí)現(xiàn)的方法就是比較有用的了。

我們可以使用這樣的方法來初始化一個實(shí)現(xiàn)了名為Hello的protocol的類:

id<Hello> test = [[Test alloc] init]; 

protocol除了作為接口的作用之外,經(jīng)常還用來作為類之間進(jìn)行交互的方法,這時(shí)它叫作delegate。delegate的主要作用,是把一個類需要做的一部分事情,讓另一個類來完成。網(wǎng)上介紹delegate的文章鋪天蓋地,這里不再說述。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • iOS實(shí)現(xiàn)圖片折疊效果

    iOS實(shí)現(xiàn)圖片折疊效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)圖片折疊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • iOS新版微信底部返回橫條問題的解決

    iOS新版微信底部返回橫條問題的解決

    這篇文章主要介紹了iOS新版微信底部返回橫條問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • IOS開發(fā)QQ空間/朋友圈類界面的搭建

    IOS開發(fā)QQ空間/朋友圈類界面的搭建

    本篇文章主要介紹了iOS開發(fā)之類似朋友圈的社交界面實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • iOS開發(fā)避免安全隱患的要點(diǎn)總結(jié)

    iOS開發(fā)避免安全隱患的要點(diǎn)總結(jié)

    在本篇文章里小編給各位整理了關(guān)于iOS開發(fā)如何避免安全隱患的知識點(diǎn)總結(jié),需要的朋友們學(xué)習(xí)下。
    2019-07-07
  • ios的手勢操作之UIGestureRecognizer淺析(推薦)

    ios的手勢操作之UIGestureRecognizer淺析(推薦)

    本篇文章主要介紹了ios的手勢操作之UIGestureRecognizer淺析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。
    2016-12-12
  • iOS中使用Fastlane實(shí)現(xiàn)自動化打包和發(fā)布

    iOS中使用Fastlane實(shí)現(xiàn)自動化打包和發(fā)布

    Fastlane是一套使用Ruby寫的自動化工具集,用于iOS和Android的自動化打包、發(fā)布等工作,可以節(jié)省大量的時(shí)間。下面給大家介紹ios fastlane 自動化打包和發(fā)布的安裝方法,需要的朋友參考下吧
    2017-05-05
  • iOS自定義UIBarButtonItem的target和action示例代碼

    iOS自定義UIBarButtonItem的target和action示例代碼

    這篇文章主要給大家介紹了關(guān)于iOS自定義UIBarButtonItem的target和action的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS實(shí)現(xiàn)數(shù)字倍數(shù)動畫效果

    iOS實(shí)現(xiàn)數(shù)字倍數(shù)動畫效果

    在iOS開發(fā)中,制作動畫效果是最讓開發(fā)者享受的環(huán)節(jié)之一,下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)數(shù)字倍數(shù)動畫效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS開發(fā)中使用UIDynamic來捕捉動畫組件的重力行為

    iOS開發(fā)中使用UIDynamic來捕捉動畫組件的重力行為

    這篇文章主要介紹了iOS開發(fā)中使用UIDynamic來捕捉動畫組件的重力行為的方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-12-12
  • iOS 標(biāo)簽Tag列表的實(shí)現(xiàn)代碼

    iOS 標(biāo)簽Tag列表的實(shí)現(xiàn)代碼

    這篇文章主要介紹了本篇文章主要介紹了iOS 標(biāo)簽Tag列表的實(shí)現(xiàn)代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-04-04

最新評論

盈江县| 泸西县| 随州市| 平定县| 广州市| 驻马店市| 龙陵县| 会东县| 左权县| 陵水| 台北市| 凤翔县| 武功县| 汝阳县| 曲阜市| 广汉市| 沂水县| 庆云县| 襄汾县| 江油市| 武陟县| 吉水县| 屯留县| 武汉市| 玉屏| 辰溪县| 承德市| 永仁县| 永康市| 桂平市| 景德镇市| 克东县| 盖州市| 大新县| 阿尔山市| 黄石市| 民丰县| 杭州市| 旺苍县| 涿州市| 治多县|