关于runtime的一点理解代码


#import <Foundation/Foundation.h>

#import <objc/runtime.h>



@interface MyClass : NSObject


@end


@implementation MyClass


@end


void myMethodIMP(id self,SEL _cmd){

    NSLog(@"runtime hello");

}



int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // insert code here...

        NSLog(@"Hello, World!");

        

        NSLog(@"%s",@selector(test));

        NSLog(@"%lu",strlen(@selector(test)));

        

        char *s = calloc(100, sizeof(char));

        strcat(s,@selector(test));

        strcat(s,@selector(test));

        NSLog(@"%s",s);

        free(s);

        

        class_addMethod([MyClass class], @selector(myMethod), (IMP)myMethodIMP, "v@:");

        MyClass *myObject = [[MyClass alloc] init];

        

        [myObject performSelector:@selector(myMethod)];


        

    }

    return 0;

}




运行结果

2016-03-14 15:25:44.207 KKBOX[5786:187150] Hello, World!

2016-03-14 15:25:44.208 KKBOX[5786:187150] test

2016-03-14 15:25:44.208 KKBOX[5786:187150] 4

2016-03-14 15:25:44.208 KKBOX[5786:187150] testtest

2016-03-14 15:25:44.209 KKBOX[5786:187150] runtime hello

Program ended with exit code: 0


转载于:https://my.oschina.net/daniels/blog/637122

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值