2013-10-14 38 views
4

我有點困惑「:SuperClass」的用途。假設我有一個名爲MyClass的模型類,它是NSObject的子類。我在其接口中寫入該類是NSObject的子類,但實際上我幾乎從不導入NSObject頭文件。我導入的是整個Foundation.h預編譯的頭文件。導入Foundation.h,但使用:NSObject

#import <Foundation/Foundation.h> 

@interface MyClass : NSObject 

從NSObject而不是基金會,或者是否有任何其他含義背後寫的是我唯一的約定嗎?

回答

5

Foundation.h導入基礎框架中存在的所有類,因此導入NSObject.h。 如果你只是想導入NSObject.h的,你應該使用

#import <Foundation/NSObject.h> 

下面是Foundation.h文件源

/* Foundation.h 
    Copyright (c) 1994-2013, Apple Inc. All rights reserved. 
*/ 


#include <CoreFoundation/CoreFoundation.h> 

#import <Foundation/NSObjCRuntime.h> 

#import <Foundation/NSArray.h> 
#import <Foundation/NSAutoreleasePool.h> 
#import <Foundation/NSBundle.h> 
#import <Foundation/NSByteOrder.h> 
#import <Foundation/NSCalendar.h> 
#import <Foundation/NSCharacterSet.h> 
#import <Foundation/NSCoder.h> 
#import <Foundation/NSData.h> 
#import <Foundation/NSDate.h> 
#import <Foundation/NSDateFormatter.h> 
#import <Foundation/NSDecimal.h> 
#import <Foundation/NSDecimalNumber.h> 
#import <Foundation/NSDictionary.h> 
#import <Foundation/NSEnumerator.h> 
#import <Foundation/NSError.h> 
#import <Foundation/NSException.h> 
#import <Foundation/NSFileHandle.h> 
#import <Foundation/NSFileManager.h> 
#import <Foundation/NSFormatter.h> 
#import <Foundation/NSHashTable.h> 
#import <Foundation/NSHTTPCookie.h> 
#import <Foundation/NSHTTPCookieStorage.h> 
#import <Foundation/NSIndexPath.h> 
#import <Foundation/NSIndexSet.h> 
#import <Foundation/NSInvocation.h> 
#import <Foundation/NSJSONSerialization.h> 
#import <Foundation/NSKeyValueCoding.h> 
#import <Foundation/NSKeyValueObserving.h> 
#import <Foundation/NSKeyedArchiver.h> 
#import <Foundation/NSLocale.h> 
#import <Foundation/NSLock.h> 
#import <Foundation/NSMapTable.h> 
#import <Foundation/NSMethodSignature.h> 
#import <Foundation/NSNotification.h> 
#import <Foundation/NSNotificationQueue.h> 
#import <Foundation/NSNull.h> 
#import <Foundation/NSNumberFormatter.h> 
#import <Foundation/NSObject.h> 
#import <Foundation/NSOperation.h> 
#import <Foundation/NSOrderedSet.h> 
#import <Foundation/NSOrthography.h> 
#import <Foundation/NSPathUtilities.h> 
#import <Foundation/NSPointerArray.h> 
#import <Foundation/NSPointerFunctions.h> 
#import <Foundation/NSPort.h> 
#import <Foundation/NSProcessInfo.h> 
#import <Foundation/NSPropertyList.h> 
#import <Foundation/NSProxy.h> 
#import <Foundation/NSRange.h> 
#import <Foundation/NSRegularExpression.h> 
#import <Foundation/NSRunLoop.h> 
#import <Foundation/NSScanner.h> 
#import <Foundation/NSSet.h> 
#import <Foundation/NSSortDescriptor.h> 
#import <Foundation/NSStream.h> 
#import <Foundation/NSString.h> 
#import <Foundation/NSTextCheckingResult.h> 
#import <Foundation/NSThread.h> 
#import <Foundation/NSTimeZone.h> 
#import <Foundation/NSTimer.h> 
#import <Foundation/NSURL.h> 
#import <Foundation/NSURLAuthenticationChallenge.h> 
#import <Foundation/NSURLCache.h> 
#import <Foundation/NSURLConnection.h> 
#import <Foundation/NSURLCredential.h> 
#import <Foundation/NSURLCredentialStorage.h> 
#import <Foundation/NSURLError.h> 
#import <Foundation/NSURLProtectionSpace.h> 
#import <Foundation/NSURLProtocol.h> 
#import <Foundation/NSURLRequest.h> 
#import <Foundation/NSURLResponse.h> 
#import <Foundation/NSUserDefaults.h> 
#import <Foundation/NSValue.h> 
#import <Foundation/NSValueTransformer.h> 
#import <Foundation/NSXMLParser.h> 
#import <Foundation/NSZone.h> 

#import <Foundation/FoundationErrors.h> 

#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE) 

#import <Foundation/NSAttributedString.h> 
#import <Foundation/NSByteCountFormatter.h> 
#import <Foundation/NSCache.h> 
#import <Foundation/NSComparisonPredicate.h> 
#import <Foundation/NSCompoundPredicate.h> 
#import <Foundation/NSExpression.h> 
#import <Foundation/NSFileCoordinator.h> 
#import <Foundation/NSFilePresenter.h> 
#import <Foundation/NSFileVersion.h> 
#import <Foundation/NSFileWrapper.h> 
#import <Foundation/NSLinguisticTagger.h> 
#import <Foundation/NSMetadata.h> 
#import <Foundation/NSMetadataAttributes.h> 
#import <Foundation/NSNetServices.h> 
#import <Foundation/NSPredicate.h> 
#import <Foundation/NSProgress.h> 
#import <Foundation/NSUbiquitousKeyValueStore.h> 
#import <Foundation/NSUndoManager.h> 
#import <Foundation/NSURLSession.h> 
#import <Foundation/NSUUID.h> 

#endif 

#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || TARGET_OS_WIN32 

#import <Foundation/NSArchiver.h> 
#import <Foundation/NSCalendarDate.h> 
#import <Foundation/NSConnection.h> 
#import <Foundation/NSDistantObject.h> 
#import <Foundation/NSDistributedNotificationCenter.h> 
#import <Foundation/NSGeometry.h> 
#import <Foundation/NSPortCoder.h> 
#import <Foundation/NSPortMessage.h> 
#import <Foundation/NSPortNameServer.h> 
#import <Foundation/NSProtocolChecker.h> 
#import <Foundation/NSTask.h> 
#import <Foundation/NSXMLDTD.h> 
#import <Foundation/NSXMLDTDNode.h> 
#import <Foundation/NSXMLDocument.h> 
#import <Foundation/NSXMLElement.h> 
#import <Foundation/NSXMLNode.h> 
#import <Foundation/NSXMLNodeOptions.h> 
#import <Foundation/NSURLDownload.h> 
#import <Foundation/NSURLHandle.h> 

#endif 

#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) 

#import <Foundation/NSAffineTransform.h> 
#import <Foundation/NSAppleEventDescriptor.h> 
#import <Foundation/NSAppleEventManager.h> 
#import <Foundation/NSAppleScript.h> 
#import <Foundation/NSClassDescription.h> 
#import <Foundation/NSDistributedLock.h> 
#import <Foundation/NSGarbageCollector.h> 
#import <Foundation/NSHFSFileTypes.h> 
#import <Foundation/NSHost.h> 
#import <Foundation/NSObjectScripting.h> 
#import <Foundation/NSScriptClassDescription.h> 
#import <Foundation/NSScriptCoercionHandler.h> 
#import <Foundation/NSScriptCommand.h> 
#import <Foundation/NSScriptCommandDescription.h> 
#import <Foundation/NSScriptExecutionContext.h> 
#import <Foundation/NSScriptKeyValueCoding.h> 
#import <Foundation/NSScriptObjectSpecifiers.h> 
#import <Foundation/NSScriptStandardSuiteCommands.h> 
#import <Foundation/NSScriptSuiteRegistry.h> 
#import <Foundation/NSScriptWhoseTests.h> 
#import <Foundation/NSSpellServer.h> 
#import <Foundation/NSUserNotification.h> 
#import <Foundation/NSUserScriptTask.h> 
#import <Foundation/NSXPCConnection.h> 

#endif 

關於難道只有約定寫..

見你」不要只用NSObject.h來實現你的類,你可能需要NSArray/NSDictionary/NSDate/etc。等等。因此,我們通常不輸入所有這些類,而是輸入Foundation.h

3

看看Foundation.h - 它爲您導入所有核心對象。 你可以使用:

#import <Foundation/NSObject.h> 

如果你知道你將永遠不會使用其他對象 - 但它更方便,只需導入所有基礎類,因爲您將使用它們很經常:)

,你應該總是繼承NSObject,因爲沒有「基礎」類。

NSObject爲運行時系統提供了一個基本接口,並且可以像Objective-C對象那樣工作。

相關問題