#import #import #import #import #import #import #import @class A, Foo; @protocol I; NS_ASSUME_NONNULL_BEGIN #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunknown-warning-option" #pragma clang diagnostic ignored "-Wincompatible-property-type" #pragma clang diagnostic ignored "-Wnullability" #pragma push_macro("_Nullable_result") #if !__has_feature(nullability_nullable_result) #undef _Nullable_result #define _Nullable_result _Nullable #endif @interface A : Base - (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); + (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); @end @protocol I @required @end __attribute__((objc_subclassing_restricted)) @interface Foo : A + (instancetype)alloc __attribute__((unavailable)); + (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); - (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable)); + (instancetype)new __attribute__((unavailable)); + (instancetype)foo __attribute__((swift_name("init()"))); @property (class, readonly, getter=shared) Foo *shared __attribute__((swift_name("shared"))); @end #pragma pop_macro("_Nullable_result") #pragma clang diagnostic pop NS_ASSUME_NONNULL_END