//===--- SwiftNativeNSObject.mm - NSObject-inheriting native class --------===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// // // Define the SwiftNativeNSObject class, which inherits from // NSObject but uses Swift reference-counting. // //===----------------------------------------------------------------------===// #include "swift/Runtime/Config.h" #if SWIFT_OBJC_INTEROP #import #import #include #include #include #include "swift/Runtime/HeapObject.h" #include "swift/Runtime/Metadata.h" #include "swift/Runtime/ObjCBridge.h" using namespace swift; SWIFT_RUNTIME_STDLIB_API @interface SwiftNativeNSObject : NSObject { @private SWIFT_HEAPOBJECT_NON_OBJC_MEMBERS; } @end @implementation SwiftNativeNSObject + (instancetype)allocWithZone: (NSZone *)zone { // Allocate the object with swift_allocObject(). // Note that this doesn't work if called on SwiftNativeNSObject itself, // which is not a Swift class. auto cls = cast(reinterpret_cast(self)); assert(cls->isTypeMetadata()); auto result = swift_allocObject(cls, cls->getInstanceSize(), cls->getInstanceAlignMask()); return reinterpret_cast(result); } - (instancetype)initWithCoder: (NSCoder *)coder { return [super init]; } + (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key { return NO; } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-missing-super-calls" STANDARD_OBJC_METHOD_IMPLS_FOR_SWIFT_OBJECTS #pragma clang diagnostic pop @end #endif