为什么在delphi中Objective-c NSObject的接口是部分的?

时间:2017-02-10 14:38:13

标签: ios delphi firemonkey

在delphi中我们有以下代码:

 // Base Cocoa NSObject
  NSObjectClass = interface(IObjectiveCClass)
    ['{84CDD025-E02A-4128-B1AC-35A7A5A4643B}']
    procedure cancelPreviousPerformRequestsWithTarget(target: Pointer); cdecl;
  end;
  NSObject = interface(IObjectiveCInstance)
    ['{C8CC567E-50C3-461C-BAA7-AD96D2CDC5C6}']
    procedure retain; cdecl;
    procedure release; cdecl;
    function retainCount: NSUInteger; cdecl;
    function isKindOfClass(cls: Pointer): Boolean; cdecl;
    function isMemberOfClass(cls: Pointer): Boolean; cdecl;
    procedure performSelector(aSelector: SEL; withObject: Pointer; afterDelay: NSTimeInterval); cdecl;
    procedure performSelectorOnMainThread(aSelector: SEL; withObject: Pointer; waitUntilDone: Boolean;
      modes: NSArray); cdecl;
    function respondsToSelector(aSelector: SEL): Boolean; cdecl;
  end;
  TNSObject = class(TOCGenericImport<NSObjectClass, NSObject>) end;

并且在(*和*)

之间停用如下所示的完整声明
(*  Use hand-coded NSObject instead of this.
  NSObjectClass = interface(IObjectiveCClass)
    ['{F9BFF4FF-EAB6-49D8-8577-A6933CA06436}']
    {class} function accessInstanceVariablesDirectly: Boolean; cdecl;
    {class} function alloc: Pointer; cdecl;
    {class} function allocWithZone(zone: Pointer): Pointer; cdecl;
    {class} function automaticallyNotifiesObserversForKey(key: NSString): Boolean; cdecl;
    {class} procedure cancelPreviousPerformRequestsWithTarget(aTarget: Pointer); cdecl; overload;
    {class} function classFallbacksForKeyedArchiver: NSArray; cdecl;
    {class} function conformsToProtocol(protocol: Pointer): Boolean; cdecl; overload;
    {class} function copyWithZone(zone: Pointer): Pointer; cdecl; overload;
    {class} function description: NSString; cdecl; overload;
    {class} procedure initialize; cdecl;
    {class} function instanceMethodForSelector(aSelector: SEL): IMP; cdecl;
    {class} function instanceMethodSignatureForSelector(aSelector: SEL): NSMethodSignature; cdecl;
    {class} function instancesRespondToSelector(aSelector: SEL): Boolean; cdecl;
    {class} function isSubclassOfClass(aClass: Pointer): Boolean; cdecl;
    {class} function keyPathsForValuesAffectingValueForKey(key: NSString): NSSet; cdecl;
    {class} procedure load; cdecl;
    {class} function mutableCopyWithZone(zone: Pointer): Pointer; cdecl; overload;
    {class} function new: Pointer; cdecl;
    {class} function resolveClassMethod(sel: SEL): Boolean; cdecl;
    {class} function resolveInstanceMethod(sel: SEL): Boolean; cdecl;
    {class} procedure setVersion(aVersion: NSInteger); cdecl;
    {class} function version: NSInteger; cdecl;
  end;
  NSObject = interface(IObjectiveCInstance)
    ['{E4D50F26-32F2-4093-BE8E-6D328FF21945}']
    procedure URLProtocol(protocol: NSURLProtocol; cachedResponseIsValid: NSCachedURLResponse); cdecl; overload;
    procedure URLProtocol(protocol: NSURLProtocol; didCancelAuthenticationChallenge: NSURLAuthenticationChallenge); cdecl; overload;
    procedure URLProtocol(protocol: NSURLProtocol; didFailWithError: NSError); cdecl; overload;
    procedure URLProtocol(protocol: NSURLProtocol; didLoadData: NSData); cdecl; overload;
    procedure URLProtocol(protocol: NSURLProtocol; didReceiveAuthenticationChallenge: NSURLAuthenticationChallenge); cdecl; overload;
    procedure URLProtocol(protocol: NSURLProtocol; didReceiveResponse: NSURLResponse; cacheStoragePolicy: NSURLCacheStoragePolicy); cdecl; overload;
    procedure URLProtocol(protocol: NSURLProtocol; wasRedirectedToRequest: NSURLRequest; redirectResponse: NSURLResponse); cdecl; overload;
    procedure URLProtocolDidFinishLoading(protocol: NSURLProtocol); cdecl;
    procedure addObserver(observer: NSObject; forKeyPath: NSString; options: NSKeyValueObservingOptions; context: Pointer); cdecl;
    procedure archiver(archiver: NSKeyedArchiver; didEncodeObject: Pointer); cdecl; overload;
    function archiver(archiver: NSKeyedArchiver; willEncodeObject: Pointer): Pointer; cdecl; overload;
    procedure archiver(archiver: NSKeyedArchiver; willReplaceObject: Pointer; withObject: Pointer); cdecl; overload;
    procedure archiverDidFinish(archiver: NSKeyedArchiver); cdecl;
    procedure archiverWillFinish(archiver: NSKeyedArchiver); cdecl;
    function attemptRecoveryFromError(error: PPointer; optionIndex: NSUInteger): Boolean; cdecl; overload;
    procedure attemptRecoveryFromError(error: PPointer; optionIndex: NSUInteger; delegate: Pointer; didRecoverSelector: SEL; contextInfo: Pointer); cdecl; overload;
    function autoContentAccessingProxy: Pointer; cdecl;
    function autorelease: Pointer; cdecl;
    function awakeAfterUsingCoder(aDecoder: NSCoder): Pointer; cdecl;
    function beginContentAccess: Boolean; cdecl;
    procedure cache(cache: NSCache; willEvictObject: Pointer); cdecl;
    procedure cancelAuthenticationChallenge(challenge: NSURLAuthenticationChallenge); cdecl;
    function conformsToProtocol(aProtocol: Pointer): Boolean; cdecl; overload;
    function connection(connection: NSURLConnection; canAuthenticateAgainstProtectionSpace: NSURLProtectionSpace): Boolean; cdecl; overload;
    procedure connection(connection: NSURLConnection; didCancelAuthenticationChallenge: NSURLAuthenticationChallenge); cdecl; overload;
    procedure connection(connection: NSURLConnection; didFailWithError: NSError); cdecl; overload;
    procedure connection(connection: NSURLConnection; didReceiveAuthenticationChallenge: NSURLAuthenticationChallenge); cdecl; overload;
    procedure connection(connection: NSURLConnection; didReceiveData: NSData); cdecl; overload;
    procedure connection(connection: NSURLConnection; didReceiveResponse: NSURLResponse); cdecl; overload;
    procedure connection(connection: NSURLConnection; didSendBodyData: NSInteger; totalBytesWritten: NSInteger; totalBytesExpectedToWrite: NSInteger); cdecl; overload;
    procedure connection(connection: NSURLConnection; didWriteData: Int64; totalBytesWritten: Int64; expectedTotalBytes: Int64); cdecl; overload;
    function connection(connection: NSURLConnection; needNewBodyStream: NSURLRequest): NSInputStream; cdecl; overload;
    function connection(connection: NSURLConnection; willCacheResponse: NSCachedURLResponse): NSCachedURLResponse; cdecl; overload;
    function connection(connection: NSURLConnection; willSendRequest: NSURLRequest; redirectResponse: NSURLResponse): NSURLRequest; cdecl; overload;
    procedure connection(connection: NSURLConnection; willSendRequestForAuthenticationChallenge: NSURLAuthenticationChallenge); cdecl; overload;
    procedure connectionDidFinishDownloading(connection: NSURLConnection; destinationURL: NSURL); cdecl;
    procedure connectionDidFinishLoading(connection: NSURLConnection); cdecl;
    procedure connectionDidResumeDownloading(connection: NSURLConnection; totalBytesWritten: Int64; expectedTotalBytes: Int64); cdecl;
    function connectionShouldUseCredentialStorage(connection: NSURLConnection): Boolean; cdecl;
    procedure continueWithoutCredentialForAuthenticationChallenge(challenge: NSURLAuthenticationChallenge); cdecl;
    function copy: Pointer; cdecl;
    function copyWithZone(zone: Pointer): Pointer; cdecl; overload;
    function countByEnumeratingWithState(state: NSFastEnumerationState; objects: Pointer; count: NSUInteger): NSUInteger; cdecl;
    procedure dealloc; cdecl;
    function debugDescription: NSString; cdecl;
    function description: NSString; cdecl; overload;
    function dictionaryWithValuesForKeys(keys: NSArray): NSDictionary; cdecl;
    procedure didChange(changeKind: NSKeyValueChange; valuesAtIndexes: NSIndexSet; forKey: NSString); cdecl;
    procedure didChangeValueForKey(key: NSString); cdecl; overload;
    procedure didChangeValueForKey(key: NSString; withSetMutation: NSKeyValueSetMutationKind; usingObjects: NSSet); cdecl; overload;
    procedure discardContentIfPossible; cdecl;
    procedure doesNotRecognizeSelector(aSelector: SEL); cdecl;
    procedure encodeWithCoder(aCoder: NSCoder); cdecl;
    procedure endContentAccess; cdecl;
    function exceptionDuringOperation(operation: SEL; error: NSCalculationError; leftOperand: NSDecimalNumber; rightOperand: NSDecimalNumber): NSDecimalNumber; cdecl;
    function fileManager(fileManager: NSFileManager; shouldCopyItemAtPath: NSString; toPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldCopyItemAtURL: NSURL; toURL: NSURL): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldLinkItemAtPath: NSString; toPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldLinkItemAtURL: NSURL; toURL: NSURL): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldMoveItemAtPath: NSString; toPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldMoveItemAtURL: NSURL; toURL: NSURL): Boolean; cdecl; overload;
    function fileManager(fm: NSFileManager; shouldProceedAfterError: NSDictionary): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; copyingItemAtPath: NSString; toPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; copyingItemAtURL: NSURL; toURL: NSURL): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; linkingItemAtPath: NSString; toPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; linkingItemAtURL: NSURL; toURL: NSURL): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; movingItemAtPath: NSString; toPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; movingItemAtURL: NSURL; toURL: NSURL): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; removingItemAtPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldProceedAfterError: NSError; removingItemAtURL: NSURL): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldRemoveItemAtPath: NSString): Boolean; cdecl; overload;
    function fileManager(fileManager: NSFileManager; shouldRemoveItemAtURL: NSURL): Boolean; cdecl; overload;
    procedure fileManager(fm: NSFileManager; willProcessPath: NSString); cdecl; overload;
    procedure finalize; cdecl;
    procedure forwardInvocation(anInvocation: NSInvocation); cdecl;
    function forwardingTargetForSelector(aSelector: SEL): Pointer; cdecl;
    procedure handleMachMessage(msg: Pointer); cdecl;
    procedure handlePortMessage(message: NSPortMessage); cdecl;
    function hash: NSUInteger; cdecl;
    function init: Pointer; cdecl;
    function initWithCoder(aDecoder: NSCoder): Pointer; cdecl;
    function isContentDiscarded: Boolean; cdecl;
    function isEqual(object_: Pointer): Boolean; cdecl;
    function isKindOfClass(aClass: Pointer): Boolean; cdecl;
    function isMemberOfClass(aClass: Pointer): Boolean; cdecl;
    function isProxy: Boolean; cdecl;
    procedure lock; cdecl;
    function metadataQuery(query: NSMetadataQuery; replacementObjectForResultObject: NSMetadataItem): Pointer; cdecl; overload;
    function metadataQuery(query: NSMetadataQuery; replacementValueForAttribute: NSString; value: Pointer): Pointer; cdecl; overload;
    function methodForSelector(aSelector: SEL): IMP; cdecl;
    function methodSignatureForSelector(aSelector: SEL): NSMethodSignature; cdecl;
    function mutableArrayValueForKey(key: NSString): NSMutableArray; cdecl;
    function mutableArrayValueForKeyPath(keyPath: NSString): NSMutableArray; cdecl;
    function mutableCopy: Pointer; cdecl;
    function mutableCopyWithZone(zone: Pointer): Pointer; cdecl; overload;
    function mutableOrderedSetValueForKey(key: NSString): NSMutableOrderedSet; cdecl;
    function mutableOrderedSetValueForKeyPath(keyPath: NSString): NSMutableOrderedSet; cdecl;
    function mutableSetValueForKey(key: NSString): NSMutableSet; cdecl;
    function mutableSetValueForKeyPath(keyPath: NSString): NSMutableSet; cdecl;
    procedure netService(sender: NSNetService; didNotPublish: NSDictionary); cdecl; overload;
    procedure netService(sender: NSNetService; didNotResolve: NSDictionary); cdecl; overload;
    procedure netService(sender: NSNetService; didUpdateTXTRecordData: NSData); cdecl; overload;
    procedure netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser; didFindDomain: NSString; moreComing: Boolean); cdecl; overload;
    procedure netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser; didFindService: NSNetService; moreComing: Boolean); cdecl; overload;
    procedure netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser; didNotSearch: NSDictionary); cdecl; overload;
    procedure netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser; didRemoveDomain: NSString; moreComing: Boolean); cdecl; overload;
    procedure netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser; didRemoveService: NSNetService; moreComing: Boolean); cdecl; overload;
    procedure netServiceBrowserDidStopSearch(aNetServiceBrowser: NSNetServiceBrowser); cdecl;
    procedure netServiceBrowserWillSearch(aNetServiceBrowser: NSNetServiceBrowser); cdecl;
    procedure netServiceDidPublish(sender: NSNetService); cdecl;
    procedure netServiceDidResolveAddress(sender: NSNetService); cdecl;
    procedure netServiceDidStop(sender: NSNetService); cdecl;
    procedure netServiceWillPublish(sender: NSNetService); cdecl;
    procedure netServiceWillResolve(sender: NSNetService); cdecl;
    function observationInfo: Pointer; cdecl;
    procedure observeValueForKeyPath(keyPath: NSString; ofObject: Pointer; change: NSDictionary; context: Pointer); cdecl;
    procedure parser(parser: NSXMLParser; didEndElement: NSString; namespaceURI: NSString; qualifiedName: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; didEndMappingPrefix: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; didStartElement: NSString; namespaceURI: NSString; qualifiedName: NSString; attributes: NSDictionary); cdecl; overload;
    procedure parser(parser: NSXMLParser; didStartMappingPrefix: NSString; toURI: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundCDATA: NSData); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundCharacters: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundComment: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundElementDeclarationWithName: NSString; model: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundExternalEntityDeclarationWithName: NSString; publicID: NSString; systemID: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundIgnorableWhitespace: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundInternalEntityDeclarationWithName: NSString; value: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundNotationDeclarationWithName: NSString; publicID: NSString; systemID: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundProcessingInstructionWithTarget: NSString; data: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; foundUnparsedEntityDeclarationWithName: NSString; publicID: NSString; systemID: NSString; notationName: NSString); cdecl; overload;
    procedure parser(parser: NSXMLParser; parseErrorOccurred: NSError); cdecl; overload;
    function parser(parser: NSXMLParser; resolveExternalEntityName: NSString; systemID: NSString): NSData; cdecl; overload;
    procedure parser(parser: NSXMLParser; validationErrorOccurred: NSError); cdecl; overload;
    procedure parserDidEndDocument(parser: NSXMLParser); cdecl;
    procedure parserDidStartDocument(parser: NSXMLParser); cdecl;
    procedure performDefaultHandlingForAuthenticationChallenge(challenge: NSURLAuthenticationChallenge); cdecl;
    function performSelector(aSelector: SEL): Pointer; cdecl; overload;
    procedure performSelector(aSelector: SEL; onThread: NSThread; withObject: Pointer; waitUntilDone: Boolean); cdecl; overload;
    procedure performSelector(aSelector: SEL; onThread: NSThread; withObject: Pointer; waitUntilDone: Boolean; modes: NSArray); cdecl; overload;
    function performSelector(aSelector: SEL; withObject: Pointer): Pointer; cdecl; overload;
    procedure performSelector(aSelector: SEL; withObject: Pointer; afterDelay: NSTimeInterval); cdecl; overload;
    procedure performSelector(aSelector: SEL; withObject: Pointer; afterDelay: NSTimeInterval; inModes: NSArray); cdecl; overload;
    procedure performSelectorInBackground(aSelector: SEL; withObject: Pointer); cdecl;
    procedure performSelectorOnMainThread(aSelector: SEL; withObject: Pointer; waitUntilDone: Boolean); cdecl; overload;
    procedure performSelectorOnMainThread(aSelector: SEL; withObject: Pointer; waitUntilDone: Boolean; modes: NSArray); cdecl; overload;
    procedure presentedItemDidChange; cdecl;
    procedure presentedItemDidGainVersion(version: NSFileVersion); cdecl;
    procedure presentedItemDidLoseVersion(version: NSFileVersion); cdecl;
    procedure presentedItemDidMoveToURL(newURL: NSURL); cdecl;
    procedure presentedItemDidResolveConflictVersion(version: NSFileVersion); cdecl;
    function presentedItemOperationQueue: NSOperationQueue; cdecl;
    function presentedItemURL: NSURL; cdecl;
    procedure presentedSubitemAtURL(url: NSURL; didGainVersion: NSFileVersion); cdecl; overload;
    procedure presentedSubitemAtURL(url: NSURL; didLoseVersion: NSFileVersion); cdecl; overload;
    procedure presentedSubitemAtURL(oldURL: NSURL; didMoveToURL: NSURL); cdecl; overload;
    procedure presentedSubitemAtURL(url: NSURL; didResolveConflictVersion: NSFileVersion); cdecl; overload;
    procedure presentedSubitemDidAppearAtURL(url: NSURL); cdecl;
    procedure presentedSubitemDidChangeAtURL(url: NSURL); cdecl;
    procedure rejectProtectionSpaceAndContinueWithChallenge(challenge: NSURLAuthenticationChallenge); cdecl;
    procedure release; cdecl;
    procedure removeObserver(observer: NSObject; forKeyPath: NSString); cdecl; overload;
    procedure removeObserver(observer: NSObject; forKeyPath: NSString; context: Pointer); cdecl; overload;
    function replacementObjectForCoder(aCoder: NSCoder): Pointer; cdecl;
    function replacementObjectForKeyedArchiver(archiver: NSKeyedArchiver): Pointer; cdecl;
    function respondsToSelector(aSelector: SEL): Boolean; cdecl;
    function retain: Pointer; cdecl;
    function retainCount: NSUInteger; cdecl;
    function roundingMode: NSRoundingMode; cdecl;
    function scale: Smallint; cdecl;
    function self: Pointer; cdecl;
    procedure setNilValueForKey(key: NSString); cdecl;
    procedure setObservationInfo(observationInfo: Pointer); cdecl;
    procedure setValue(value: Pointer; forKey: NSString); cdecl; overload;
    procedure setValue(value: Pointer; forKeyPath: NSString); cdecl; overload;
    procedure setValue(value: Pointer; forUndefinedKey: NSString); cdecl; overload;
    procedure setValuesForKeysWithDictionary(keyedValues: NSDictionary); cdecl;
    procedure stream(aStream: NSStream; handleEvent: NSStreamEvent); cdecl;
    function unarchiver(unarchiver: NSKeyedUnarchiver; didDecodeObject: Pointer): Pointer; cdecl; overload;
    procedure unarchiver(unarchiver: NSKeyedUnarchiver; willReplaceObject: Pointer; withObject: Pointer); cdecl; overload;
    procedure unarchiverDidFinish(unarchiver: NSKeyedUnarchiver); cdecl;
    procedure unarchiverWillFinish(unarchiver: NSKeyedUnarchiver); cdecl;
    procedure unlock; cdecl;
    procedure useCredential(credential: NSURLCredential; forAuthenticationChallenge: NSURLAuthenticationChallenge); cdecl;
    function validateValue(ioValue: Pointer; forKey: NSString; error: PPointer): Boolean; cdecl; overload;
    function validateValue(ioValue: Pointer; forKeyPath: NSString; error: PPointer): Boolean; cdecl; overload;
    function valueForKey(key: NSString): Pointer; cdecl;
    function valueForKeyPath(keyPath: NSString): Pointer; cdecl;
    function valueForUndefinedKey(key: NSString): Pointer; cdecl;
    procedure willChange(changeKind: NSKeyValueChange; valuesAtIndexes: NSIndexSet; forKey: NSString); cdecl;
    procedure willChangeValueForKey(key: NSString); cdecl; overload;
    procedure willChangeValueForKey(key: NSString; withSetMutation: NSKeyValueSetMutationKind; usingObjects: NSSet); cdecl; overload;
    function zone: Pointer; cdecl;
  end;
  TNSObject = class(TOCGenericImport<NSObjectClass, NSObject>)  end;
*)
为什么?有些像addObserver非常有用......

0 个答案:

没有答案