рдЙрджреНрджреЗрд╢реНрдп-рд╕реА, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕реВрдЪрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ:
NSNumber *string = [[NSString alloc] initWithString: @"hello"]; NSLog(@"%@", string);
рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рдерд╛ ;-) рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдпрд╛
рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд░рдирдЯрд╛рдЗрдо рдкрд░, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╡рд░реНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ,
isa рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ, рдЯрд╛рдЗрдк
рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде (рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдХреНрд▓рд╛рд╕) рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рд╕рд░рд▓ рддреБрд▓рдирд╛ рджреНрд╡рд╛рд░рд╛ рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
[object class] == [object2 class];
рдпрджрд┐ рдЖрдк рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рд╡рд╕реНрддреБрдПрдВ
// : - (Class) class; + (Class) class; // : - (Class) superclass; + (Class) superclass; // : Protocol ** class_copyProtocolList(Class cls, unsigned int *outCount); // : Ivar * class_copyIvarList(Class cls, unsigned int *outCount); // : Method * class_copyMethodList(Class cls, unsigned int *outCount); // : objc_property_t * class_copyPropertyList(Class cls, unsigned int *outCount);
рдЪрд░
// : const char * ivar_getName(Ivar ivar); // : const char * ivar_getTypeEncoding(Ivar ivar);
рддрд░реАрдХреЛрдВ
// : SEL method_getName(Method method); // sel_getName(method_getName(method)); // : unsigned method_getNumberOfArguments(Method method); // index: char * method_copyArgumentType(Method method, unsigned int index); void method_getArgumentType(Method method, unsigned int index, char *dst, size_t dst_len); // : char * method_copyReturnType(Method method); void method_getReturnType(Method method, char *dst, size_t dst_len);
рдЧреБрдг
рдирд╛рдо, рдкреНрд░рдХрд╛рд░ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
const char * property_getAttributes (objc_property_t property) ;
рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ
рдХреНрд▓рд╛рд╕ ,
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ ,
SEL рдХреЛ рдЙрд╕рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
NSString * NSStringFromClass (Class aClass); SString * NSStringFromProtocol (Protocol *proto); NSString *NSStringFromSelector (SEL aSelector);
рдХрд╛рд╢, Ivar, рд╡рд┐рдзрд┐, objc_property_t рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛:
NSString *OIStringFromIvar (Ivar ivar); NSString *OIStringFromMethod (Method method); NSString *OIStringFromProperty (objc_property_t property);
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ:
#Dfine ,
typedef , рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдореЗрдВред
рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░: @ "NSObject" objc рд░рдирдЯрд╛рдЗрдо рдХреА рдПрдХ рдЕрдирдЬрд╛рдиреА рд╕рдВрдкрддреНрддрд┐ рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
@interface MyObject : NSObject { NSNumber *number; } - (void) setNumber: (NSNumber *) number; - (NSNumber *) number; @end
, рддрдм рдХрд╛рд░реНрдп:
OIStringFromIvar (ivar); // - (void) setNumber: (NSNumber *) number; OIStringFromMethod (method); // - (NSNumber *) number; OIStringFromMethod (method);
рддрджрдиреБрд╕рд╛рд░:
NSNumber *number - (void) setNumber: (id) arg1 - (id) arg1
рд╕рдВрджрд░реНрдн
рд╡рд╕реНрддреБ рдирд┐рд░реАрдХреНрд╖рдХрдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд░рдирдЯрд╛рдЗрдо рд╕рдВрджрд░реНрднрдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд░рдирдЯрд╛рдЗрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд╛рдЗрдб