1 2 @protocol foo; 3 @protocol foo2 4 @end 5 @class itf; 6 7 // Expressions 8 typedef typeof(@"foo" "bar") objc_string; 9 typedef typeof(@encode(int)) objc_encode; 10 typedef typeof(@protocol(foo2)) objc_protocol; 11 typedef typeof(@selector(noArgs)) objc_selector_noArgs; 12 typedef typeof(@selector(oneArg:)) objc_selector_oneArg; 13 typedef typeof(@selector(foo:bar:)) objc_selector_twoArg; 14 15 16 // Types. 17 typedef typeof(id<foo>) objc_id_protocol_ty; 18 19 typedef typeof(itf*) objc_interface_ty; 20 typedef typeof(itf<foo>*) objc_qual_interface_ty; 21 22 @interface PP property(assign)23@property (assign) id prop; 24 @end 25 26 static inline id getPseudoObject(PP *p) { 27 return p.prop; 28 } 29