рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдореЗрдВ рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдПрдВ

рдпрд╣ рд▓реЗрдЦ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИ ред рдЬрд╛рд╡рд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ ред тАЭ рдкрд┐рдЫрд▓реЗ рдиреЛрдЯ рдореЗрдВ, рдирд┐рд░реНрдгрдп рдмрд╣реБрдд рдЯреЗрдврд╝рд╛ рдерд╛, рдореИрдВ рдЗрд╕реЗ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдПрдХ рдордЬрдмреВрдд рдЗрд░рд╛рджреЛрдВ рд╡рд╛рд▓рд╛ рдирд┐рд░реНрдгрдп рд╣рдорд╛рд░реА рдкрд╣рд▓ рдХреЛ рдЙрд╕рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рдм рдХреБрдЫ "рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджреНрдпрдкрд┐ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдкреНрд░рд╢реНрди рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИред
рд╡реНрдпрд╛рдЦреНрдпрд╛
рд▓реЗрдЦ рдХрд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛, рд╣рд╛рдБ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЫрд┐рдкрд╛ рджрд┐рдпрд╛


рддреЛ рдЬрд╛рд╡рд╛ рдХреА рддрд░рд╣ рдЬрд╛рд░реА рд░рдЦреЗрдВ


рд╕рд┐рджреНрдзрд╛рдВрдд


рдЕрдирд╛рдо (рдирд╛рдорд╣реАрди) рд╡рд░реНрдЧ :
рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдерд╛рдиреАрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдХреЛрдИ рдирд╛рдо рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрдирд╛рдо рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдПрдХ рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдПрдХ рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдореЗрдВ рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ (рд▓реЗрдХрд┐рди рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ) (рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
class OuterClass { public OuterClass() {} void methodWithLocalClass (final int interval) { //       -  listener //    ,   //  ActionListener ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent event) { System.out.println("      " + interval + " "); } }; Timer t = new Timer(interval, listener); //       t.start(); } } 

рд╕реНрдХреЛрдк:
рдмреЗрдирд╛рдореА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдИ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ (рдУрд╡рд░рд░рд╛рдЗрдб) рдХрд░рдиреЗ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рддрдм рдкреНрд░рднрд╛рд╡реА рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрдХреАрд░реНрдг рджрд╛рдпрд░реЗ (рдпрд╛ рдПрдХ рдмрд╛рд░) рдХреЗ рдХрд╛рд░рдг рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред


рдЙрджрд╛рд╣рд░рдг


рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдг рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЖрд░рдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рдеред
1) UITableView рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг

  id delegate =[NSObject newInstAnonClass:^{ ADD_METHOD(@selector(tableView:didSelectRowAtIndexPath:), @protocol(UITableViewDelegate), NO, ^(id selfObj,UITableView* tv,NSIndexPath* path) { NSLog(@"did select row %i",path.row); }); ADD_METHOD(@selector(tableView:willSelectRowAtIndexPath:), @protocol(UITableViewDelegate), NO, ^NSIndexPath*(id selfObj,UITableView* tv,NSIndexPath* path) { NSLog(@"will select row %i",path.row); return path; }); }]; self.tableView.delegate=delegate; 

2) рдЯреЛрдордлреВрд▓рд░реА

(рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдкрджрд╛рд╡рдирдд рд╡рд┐рдзрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИ)
  NSString *str = [@"Go" overrideMethod:@selector(description) blockImp:^NSString*(){ return @"Stop"; }]; NSLog(@"%@",str); ///log: Stop 

3) рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирдИ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛

(рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдкрджрд╛рд╡рдирдд рд╡рд┐рдзрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИ)
  NSMutableArray * array1 = [NSMutableArray arrayWithCapacity:10]; NSMutableArray * array2= [NSMutableArray arrayWithCapacity:10]; [array2 modifyMethods:^{ OVERRIDE(@selector(addObject:), ^(id arr,id anObject1) { NSLog(@"%@",[anObject1 description]); //[super addObject:anObject1] struct objc_super superInfo = {arr,[arr superclass]}; objc_msgSendSuper(&superInfo, @selector(addObject:),anObject1); }); OVERRIDE(@selector(insertObject:atIndex:), ^(id arr,id anObject,NSUInteger index) { NSLog(@"%@",[anObject description]); //[super insertObject:anObject atIndex:index]; struct objc_super superInfo = {arr,[arr superclass]}; objc_msgSendSuper(&superInfo, @selector(insertObject:atIndex:),anObject,index); }); }]; [array1 addObject:@"Test"]; [array2 addObject:@"One"]; [array2 addObject:@"Two"]; Log: //   ,   addObject:  insertObject:atIndex One One Two Two 

4) рдХрд╕реНрдЯрдо рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд╕рд╛рде UIView

  UIView *tmpView = [[UIView allocAnonClass:^{ OVERRIDE(@selector(drawRect:), ^void(UIView *vie,CGRect rect){ CGContextRef context = UIGraphicsGetCurrentContext(); ... }); }] initWithFrame:CGRectMake(0, 0, 320, 480)]; 


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рдЬрдм рдЖрдк рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ <рдкреБрд░рд╛рдиреЗ рд╡рд░реНрдЧ> _anon_ <рдЕрдирд╛рдо рд╡рд░реНрдЧ рд╕рдВрдЦреНрдпрд╛> (рдЙрджрд╛рд╣рд░рдг NSString_anon_3 ), рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд╣рдо рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
  //  runtime     newClassStr,    [self class] newClass = objc_allocateClassPair([self class], [newClassStr UTF8String], 0); //    newClass:   IMP   Method .... //  objc_registerClassPair(newClass); 

рдЖрдЧреЗ, рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд┐рдзрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд▓рдЧ рд╣реИ
1.1 + (рдЖрдИрдбреА) рдПрд▓реЛрдХреЙрдирдХреНрд▓рд╛рд╕: ^ - рдПрдХ рдЕрдирд╛рдо рд╡рд░реНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ
 [[UIView allocAnonClass:^{}] initWithFrame:] //   //   UIView_anon_0 c /  [[UIView_anon_0 alloc] initWithFrame:] 

1.2 + (рдЖрдИрдбреА) newInstAnonClass: ^ - рдПрдХ рдЕрдирд╛рдо рд╡рд░реНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ init рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ
 [UIView newInstAnonClass:^{}] //   //   UIView_anon_0 c /  [UIView_anon_0 new]; //[[UIView_anon_0 alloc] init]; 

2 - (рдЖрдИрдбреА) рд╕рдВрд╢реЛрдзрд┐рддрдореИрдереЛрдбреНрд╕: ^ - рдкрд┐рдЫрд▓реЗ рджреЛ рддрд░реАрдХреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рдеред рдкреАрдврд╝реА рдХреЗ рдмрд╛рдж, рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рдХреЛ рдПрдХ рдЕрдирд╛рдо рдХреЗ рд╕рд╛рде object_setClass (рд╕реНрд╡рдпрдВ, newAnonClass) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ;
рдкрд╣рд▓реЗ рджреЛ рддрд░реАрдХреЗ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг (рдХреЙрд▓ рдЖрд╡рдВрдЯрди) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ NSMutableArray, UIButton, рдЖрджрд┐ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдПрдХ рдЕрдирд╛рдо рдХрдХреНрд╖рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдФрд░ рдпрд╣ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рдВрдЧрдбрд╝рд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдХрд▓реНрдкрдирд╛ рд╣реИ ред
рджреВрд╕рд░реА рдУрд░, рдХрднреА-рдХрднреА рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2 рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдИрдбреАред рдЦреИрд░, NSMutableArray рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рд╡рд╕реНрддреБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рд╡рд░реНрдЧ рд╣реЛрдЧреА (рдФрд░ рд╕рд╛рд░ NSMutableArray рдирд╣реАрдВ)ред рд▓реЗрдХрд┐рди, рдлрд┐рд░ рд╕реЗ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ -RRRect рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╕реНрдЯрдо рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ UIView рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛: (CGRect) рд░реЗрдХреНрдЯ рд╡рд┐рдзрд┐ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ iOS рдореЗрдВ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреНрд░рд╛рдпрд░реЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдЙрд╕рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╕реБрдирдХрд░ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ
  UIView *tmpView=[[UIView alloc] initWithFrame:CGRectMake(0,0, 320, 480)]; [tmpView overrideMethod:@selector(drawRect:) blockImp:^void(UIView* selfView,CGRect rect){ NSLog(@"draw"); }]; [self.view addSubview:tmpView]; //drawRect  tmpView    , ..    ,  ; setNeedsDisplay  ... [tmpView drawRect:CGRectZero]; //  UIView * tmpView2 =[[[tmpView class] alloc] initWithFrame:CGRectMake(0, 100, 320, 380)]; [self.view addSubview:tmpView2]; //   tmpView2 drawRect     



рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдПрдХ рдЕрдирд╛рдо рдЗрдирдкреБрдЯ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреЗ рд╕рднреА рддрд░реАрдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд C рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдХреЙрд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:
 //   sel c   blockIMP BOOL OVERRIDE(SEL sel,id blockIMP); //    sel,      p   blockIMP BOOL ADD_METHOD(SEL sel,Protocol *p, BOOL isReq, id blockIMP); //    sel,         blockIMP BOOL ADD_METHOD_C(SEL sel,Class c,id blockIMP); 

рдЪреЗрддрд╛рд╡рдиреА, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреНрд▓реЙрдХрдУрд╡ рдмреНрд▓реЙрдХ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ / рдЕрдкрд╡рд╛рдж рдорд┐рд▓реЗрдЧрд╛ред
рдЕрдВрдд рдореЗрдВ, рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛:
 Button.OnClickListener mTakePicSOnClickListener = new Button.OnClickListener() { @Override public void onClick(View v) { //body } }; 


 UIOnClickListener *listener =[UIOnClickListener newInstAnonClass:^{ OVERRIDE(@selector(onClick:), ^void(id selfObj,UIButton* sender){ //body }); }]; 

рдЖрдк рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: github.com/Flanker4/MMMutableMethods/

рдорд╛рд░реНрдЬрд┐рди рдиреЛрдЯ


рдореИрдВ рд╕реЗрд░реНрдЧреЗрдИ рд╕реНрдЯрд╛рд░реБрдЦрд┐рди (рдЧрд┐рдереБрдм рдкрд░ pingvin4eg) рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
Bsideup , firexel рдФрд░ google рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреМрди рд╕реА рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреА рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЪрд╛рдирдХ рдореБрдЭреЗ рддреИрдпрд╛рд░ рдкреАрдврд╝реА рдХреЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреАрдердм рдкрд░ рд╕рд░реНрдЧреЗрдИ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рд▓реА рдФрд░ рдмрд╕ рджреЗрдЦрддрд╛ рд╣реИ, рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрдЧреЗрдИ рдпрд╛ рддреЛ рд╡рд╣ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ рдпрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ рдЙрдиреНрд╣реЛрдВрдиреЗ рдирдП рдХрдорд┐рдЯ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдЙрдирд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ (рд╕реБрдзрд╛рд░: рдЧреАрдердм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реАрдзреЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрдирдХреЗ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд╣рдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрдЭрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИ)ред рд╣рдмреНрд░рд╛рдмреНрд░ рдкрд░ рдкреАрдПрдо рд╕рдВрджреЗрд╢ рдиреЗ рдЧреАрдердм рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдзрд╛рдЧрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╡реНрдпрд░реНрде рдореЗрдВ рдирд┐рдХрд▓рд╛, рдареАрдХ рдпрд╣реА рд╡рд╣ рд╕реНрдерд╛рди рдерд╛ рдЬрд╣рд╛рдВ рд╕рд░реНрдЧреЗрдИ рдиреЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдерд╛, рд╡рд╣ рдмрд╕ рд╣рдм рдкрд░ рдЦрд╛рддрд╛ рдирд╣реАрдВ рдерд╛ ...)ред рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рд╕реЗрд░реНрдЧреЗрдИ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рддрд░реАрдХреЗ, рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ, рдЪреЗрдХрд┐рдВрдЧ рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдирд╛рдо рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рдХреА рдХрдореА рд╣реИред) рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдордВрддреНрд░рдг рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐рд╕реА рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рд░реНрдЧреЗрдИ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдПрдХ рдкреАрдПрдо рд▓рд┐рдЦреЗрдВ рдФрд░ рдореИрдВ рдЙрд╕рдХреА рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЛ рднреЗрдЬреВрдВрдЧрд╛ред

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


All Articles