在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非常有用......