oc 關於標頭檔案宣告 與前向宣告
阿新 • • 發佈:2019-02-12
參照
http://blog.csdn.net/jiangwei0910410003/article/details/41774747
相互引用(匯入)
(student.h中匯入class。h,class。h中匯入student。h) 問題是 OC中類的相互引用的問題,我們在Student.h檔案中匯入了Classes.h,又在Classes.h檔案中匯入了Student.h,OC中在相互匯入的時候編譯是不通過的 會提示找不到指定型別 解決方法 將#import "Student.h"程式碼註釋了,使用
1.#import和#include的區別
(當我們在程式碼中使用兩次#include的時候會報錯:因為#include相當於拷貝標頭檔案中的宣告內容,所以會報重複定義的錯誤
但是使用兩次#import的話,不會報錯,他會做一次判斷,如果已經匯入一次就不匯入了)
#import本身有防止標頭檔案被重複包含的功能,而#include需要藉助於標頭檔案預處理來防止被重複包含
兩種都是把標頭檔案中的宣告內容拷貝進當前檔案中
2.關於前向宣告問題 有一個課程類Classes和學生類Student,他們兩之間需要(student.h中匯入class。h,class。h中匯入student。h) 問題是 OC中類的相互引用的問題,我們在Student.h檔案中匯入了Classes.h,又在Classes.h檔案中匯入了Student.h,OC中在相互匯入的時候編譯是不通過的 會提示找不到指定型別 解決方法 將#import "Student.h"程式碼註釋了,使用
@class Student
這段程式碼的作用就是不會將Student.h檔案拷貝過來,只是告訴編譯器Student這個類在別的地方中有定義,這樣就不知道這個類中的任何資訊了(哪些屬性和方法)
總結:
這一篇文章就介紹了#import關鍵字和@class的作用,特別是@class關鍵字的使用,為了解決相互匯入的問題,在此回顧一下我們是怎麼操作的:
Student類中的匯入Classes.h方式不變,在Classes.h標頭檔案中使用@class關鍵字引入Student型別,使其編譯通過,然後在Classes.m檔案中匯入Student.h檔案,使其執行通過