| // Matching properties |
| @interface I1 { |
| } |
| - (int)getProp2; |
| - (void)setProp2:(int)value; |
| @property (readonly) int Prop1; |
| @property (getter = getProp2, setter = setProp2:) int Prop2; |
| @end |
| |
| // Mismatched property |
| @interface I2 |
| @property (readonly) int Prop1; |
| @end |
| |
| // Properties with implementations |
| @interface I3 { |
| int ivar1; |
| int ivar2; |
| int ivar3; |
| int Prop4; |
| } |
| @property int Prop1; |
| @property int Prop2; |
| @property int Prop3; |
| @property int Prop4; |
| @end |
| |
| @implementation I3 |
| @synthesize Prop2 = ivar2; |
| @synthesize Prop1 = ivar1; |
| @synthesize Prop3 = ivar3; |
| @synthesize Prop4 = Prop4; |
| @end |