In 9.1.hyou missed 'a'.
-(void) setReal: (double) andImaginary: (double) b;
The code is still valid because in Objective-C, the selector part cannot have any name, for example
-(id)initWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y
these methods are called
return [self initWithControlPoints:0.0f :0.0f :1.0f :1.0f];
and the name of the selector is natural @selector(initWithControlPoints::::).
Therefore, the compiler will interpret your declaration as
-(void)setReal:(double)andImaginary
:(double)b;
-setReal::, gcc
warning: incomplete implementation of class ‘Complex’
warning: method definition for ‘-setReal::’ not found
BTW, , , Objective-C, C99 complex, ,
#include <complex.h>
...
double complex z = 5 + 6I;
double complex w = -4 + 2I;
z = z + w;
printf("%g + %gi\n", creal(z), cimag(z));