2010-09-03 53 views
0

我正在閱讀蘋果文檔中的Core Data Utility教程,並且有一部分對我有點不適。無用#import在apple.dev教程

在的「主」開始你的了:

#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 
#include <objc/objc-auto.h> 

爲什麼你需要包括Foundation.h如果它已經包含在CoreData.h?對於Foundation.h內部的objc-auto.h,它是一樣的嗎?爲什麼在最後一行使用#include?

謝謝

回答

0

爲什麼你需要包含Foundation.h如果它已經包含在CoreData.h中?

你並不需要,但它不會傷害在你的代碼明確,要麼。無論如何,#import阻止它被導入兩次。蘋果的教程可能只是想強調你正在使用一些基礎功能。

對於Foundation.h中的objc-auto.h是一樣的嗎?

我不認爲objc-auto.h包括在Foundation.h(或包括由Foundation.h任何東西);由於您正在使用GC功能,因此您必須包含此標題。

爲什麼在最後一行使用#include?

這是一個C語言習慣用法。 Apple的Objective-C風格決定了Objective-C頭文件被導入,包含C頭文件。 objc-auto.h是C代碼。你可以導入它,如果你想。

1

在任何基於C語言是很好的做法,包括你用什麼。在將來,由於什麼原因可能會更改標題,並且CoreData.h可能不再包含Foundation.h。

如果你不包括你使用的東西,那麼你的程序將不會編譯,並可能成爲跨多個版本的API的可移植性夢魘。

#imports // are for Objective-C headers 

#include // are for just C headers. 

他們很可能只是試圖在任何人閱讀教程中教好的做法。