91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-09 23:50:50 來源:腳本之家 閱讀:339 作者:lqh 欄目:移動開發

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

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

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

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

根據.h文件是否定義方法、.m文件是否實現方法,可以分為三類:

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

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

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

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

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

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

比如,在.m文件里這樣實現:

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

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

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

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

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

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盘锦市| 福贡县| 通渭县| 罗江县| 疏勒县| 从江县| 衡东县| 宣恩县| 闻喜县| 崇左市| 襄垣县| 平谷区| 万州区| 桓仁| 辉县市| 凉山| 庆安县| 武冈市| 锦屏县| 永靖县| 曲周县| 兴和县| 五原县| 繁峙县| 平谷区| 岗巴县| 眉山市| 宁陵县| 云霄县| 恩施市| 平和县| 高碑店市| 乐东| 色达县| 岳阳县| 桦南县| 壶关县| 毕节市| 安图县| 金塔县| 绍兴县|