首页 > 其他 > 详细

Method Swizzling对Method的要求

时间:2015-10-09 15:24:32      阅读:350      评论:0      收藏:0      [点我收藏+]

        通过method_exchangeImplementation、class_replaceMethod、method_setImplementation进行Method Swizzling时,对originalMethod和destMethod的要求如下:

(1)返回值类型可以不同。如:

- (void)func1:(NSString *)word{
    NSLog(@"This is func1~");
    }
- (BOOL)func2:(NSString *)word{
    NSLog(@"This is func2~");
    return YES;
}

(2)参数个数可以不同。如:

- (void)func1:(NSString *)word{
    NSLog(@"This is func1~");
    }
- (void)func2:(NSString *)word sec:(NSString *)word2{
    NSLog(@"This is func2~");
}

(3)但是!对应参数类型必须相同!!如:

- (void)func1:(NSString *)word{
    NSLog(@"This is func1~");
    }
- (void)func2:(NSString *)word sec:(NSString *)word2{
    NSLog(@"This is func2~");
}

第一个参数都为NSString类型。


- (void)func1:(NSString *)word sec:(int)word2 third:(BOOL)word3{
    NSLog(@"This is func1~");
    }
- (void)func2:(NSString *)word sec:(int)word2 {
    NSLog(@"This is func2~");
}

func1第一个参数为NSString,func2第一个参数也为NSString;func1第二参数为int,func2第二个参数也为int。


- (void)func1:(NSString *)word sec:(int)word2 third:(BOOL)word3{
    NSLog(@"This is func1~");
    }
- (void)func2:(NSString *)word sec:(int)word2 third:(NSString *)word3 {
    NSLog(@"This is func2~");
}

上面的情况则会报错!


本文出自 “Layne的学习园地” 博客,请务必保留此出处http://laynestone.blog.51cto.com/9459455/1701173

Method Swizzling对Method的要求

原文:http://laynestone.blog.51cto.com/9459455/1701173

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!