рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬрд╛рджреВ: рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛

рдЙрджреНрджреЗрд╢реНрдп-рд╕реА, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕реВрдЪрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ:
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 


рд╕рдВрджрд░реНрдн


рд╡рд╕реНрддреБ рдирд┐рд░реАрдХреНрд╖рдХ
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд░рдирдЯрд╛рдЗрдо рд╕рдВрджрд░реНрдн
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд░рдирдЯрд╛рдЗрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд╛рдЗрдб

Source: https://habr.com/ru/post/In120662/


All Articles