欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • iOS中設置圓角的幾種方法示例

    iOS中設置圓角的幾種方法示例

    這篇文章主要介紹了iOS中設置圓角的三種方法,其中包括使用layer屬性、使用繪圖設置圓角以及通過另一張mask圖創(chuàng)建新圖,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • iOS實現(xiàn)自動循環(huán)播放的banner實例詳解

    iOS實現(xiàn)自動循環(huán)播放的banner實例詳解

    輪播視圖通常也叫Banner,90%以上App都會用到的一個控件,網(wǎng)上有很多開源代碼,下面這篇文章主要給大家介紹了關(guān)于利用iOS如何實現(xiàn)自動循環(huán)播放的banner的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • iOS彈幕開發(fā)中遇到的問題匯總

    iOS彈幕開發(fā)中遇到的問題匯總

    最近做項目的時候需要實現(xiàn)彈幕這個功能, 雖然感覺實現(xiàn)起來也不是很復雜,但還是遇到了一些問題,下面這篇文章主要給大家總結(jié)介紹了在iOS彈幕開發(fā)中遇到的問題,文中將解決的方法介紹的非常詳細,需要的朋友可以參考下。
    2018-01-01
  • iOS 13適配匯總(推薦)

    iOS 13適配匯總(推薦)

    這篇文章主要介紹了iOS 13適配匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • iOS開發(fā)中判斷字符串為空的方法

    iOS開發(fā)中判斷字符串為空的方法

    判斷字符串為空,看著很簡單,其實不然,下面通過本篇文章給大家介紹了iOS開發(fā)中判斷字符串為空的方法,需要的朋友可以參考下
    2017-12-12
  • unix 編程進程控制詳細介紹

    unix 編程進程控制詳細介紹

    這篇文章主要介紹了unix 編程進程控制詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 舉例講解iOS中延遲加載和上拉刷新/下拉加載的實現(xiàn)

    舉例講解iOS中延遲加載和上拉刷新/下拉加載的實現(xiàn)

    這篇文章主要介紹了舉例講解iOS中延遲加載和上拉刷新/下拉加載的實現(xiàn),語言依然為傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-09-09
  • iOS開發(fā)之詳談屬性設置readwrite、readonly、retain、copy、assign、nonatomic

    iOS開發(fā)之詳談屬性設置readwrite、readonly、retain、copy、assign、nonatomic

    這篇文章主要介紹了iOS開發(fā)之詳談屬性設置readwrite、readonly、retain、copy、assign、nonatomic的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • iOS中NSArray數(shù)組常用處理方式

    iOS中NSArray數(shù)組常用處理方式

    這篇文章主要介紹了iOS中NSArray數(shù)組常用處理方式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • iOS開發(fā)中使用UILabel設置字體的相關(guān)技巧小結(jié)

    iOS開發(fā)中使用UILabel設置字體的相關(guān)技巧小結(jié)

    這篇文章主要介紹了iOS開發(fā)中UILabel設置字體的相關(guān)技巧小結(jié),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-01-01

最新評論