1 // Matches 2 @interface I1 { 3 int ivar1; 4 } 5 @end 6 7 // Matches 8 @interface I2 : I1 { 9 float ivar2; 10 } 11 @end 12 13 // Ivar mismatch 14 @interface I3 { 15 int ivar1; 16 float ivar2; 17 } 18 @end 19 20 // Superclass mismatch 21 @interface I4 : I1 { 22 } 23 @end 24 25 // Methods match 26 @interface I5 27 + (float)bar; 28 - (int)foo; 29 @end 30 31 // Method mismatch 32 @interface I6 33 + (float)foo; 34 @end 35 36 // Method mismatch 37 @interface I7 38 - (int)foo; 39 + (int)bar:(float)x; 40 @end 41 42 // Method mismatch 43 @interface I8 44 - (int)foo; 45 + (int)bar:(float)x, ...; 46 @end 47 48 // Matching protocol 49 @protocol P0 50 + (int)foo; 51 - (int)bar:(float)x; 52 @end 53 54 // Protocol with mismatching method 55 @protocol P1 56 + (int)foo; 57 - (int)bar:(double)x; 58 @end 59 60 // Interface with protocol 61 @interface I9 <P0> 62 + (int)foo; 63 - (int)bar:(float)x; 64 @end 65 66 // Protocol with protocol 67 @protocol P2 <P0> 68 - (float)wibble:(int)a1 second:(int)a2; 69 @end 70 71 // Forward-declared interface 72 @class I12, I10; 73 @interface I11 74 @end 75 76 // Forward-declared protocols 77 @protocol P3, P4; 78 @protocol P5 79 - (double)honk:(int)a; 80 @end 81 82 // Interface with implementation 83 @interface I13 84 @end 85 86 @implementation I13 87 @end 88 89 @interface I13b 90 @end 91 92 @implementation I13b 93 @end 94 95 // Implementation by itself 96 @implementation I14 : I12 97 @end 98 99 @implementation I15 : I11 100 @end 101