#import #import #import "smoke.h" @interface CPrinter : NSObject -(void)print:(const char*)string; @end; @implementation CPrinter -(void)print:(const char*)string { printf("%s\n", string); fflush(stdout); } @end; @implementation Foo @synthesize name; -(instancetype)init { if (self = [super init]) { self.name = @"World"; } return self; } -(void)helloWithPrinter:(id )printer { NSString* message = [NSString stringWithFormat:@"Hello, %@!", self.name]; [printer print:message.UTF8String]; } -(void)dealloc { printf("Deallocated\n"); } @end; @implementation Foo (FooExtensions) -(void)hello { CPrinter* printer = [[CPrinter alloc] init]; [self helloWithPrinter:printer]; } @end; void replacePairElements(id pair, int first, int second) { [pair update:0 add:(first - pair.first)]; [pair update:1 sub:(pair.second - second)]; } int (^getSupplier(int x))(void) { return ^{ return x; }; } Class (^ _Nonnull getClassGetter(NSObject* obj))() { return ^{ return obj.class; }; } NSString* globalString = @"Global string"; NSObject* globalObject = nil; int formatStringLength(NSString* format, ...) { va_list args; va_start(args, format); NSString* result = [[NSString alloc] initWithFormat:format arguments:args]; va_end(args); return result.length; }