#pragma clang system_header #define nil 0 #define BOOL int #define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin") #define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end") NS_ASSUME_NONNULL_BEGIN typedef struct _NSZone NSZone; @protocol NSObject + (instancetype)alloc; - (instancetype)init; - (instancetype)autorelease; @end @protocol NSCopying - (id)copyWithZone:(nullable NSZone *)zone; @end @protocol NSMutableCopying - (id)mutableCopyWithZone:(nullable NSZone *)zone; @end __attribute__((objc_root_class)) @interface NSObject @end @interface NSString : NSObject - (BOOL)isEqualToString : (NSString *)aString; - (NSString *)stringByAppendingString:(NSString *)aString; - (nullable NSString *)nullableStringByAppendingString:(NSString *)aString; + (NSString * _Nonnull) generateString; + (NSString *) generateImplicitlyNonnullString; + (NSString * _Nullable) generatePossiblyNullString; @end void NSSystemFunctionTakingNonnull(NSString *s); @interface NSSystemClass : NSObject - (void) takesNonnull:(NSString *)s; @end NSString* _Nullable getPossiblyNullString(); NSString* _Nonnull getString(); @protocol MyProtocol - (NSString * _Nonnull) getString; @end NS_ASSUME_NONNULL_END