1. 程式人生 > >oc 關於標頭檔案宣告 與前向宣告

oc 關於標頭檔案宣告 與前向宣告

參照 http://blog.csdn.net/jiangwei0910410003/article/details/41774747

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檔案,使其執行通過