runtime消息机制

OC:消息机制是运行时最重要的机制
消息机制:任何方法调用,本质都是发送消息
xcode5之后,苹果不建议调用底层方法
xcode5之后,可以使用运行时

使用步骤

  • 导入#import
  • TARGETS -> Build Settings 搜索msg设置Enable Strict Checking of objc_msgSend Calls为No
1.png

简单的演示

声明了一个Person类

//person.h
#import 

@interface Person : NSObject
+ (void)eat;
+ (void)eat:(int)age;
- (void)eat;
- (void)eat:(int)age;
@end

//person.m
#import "Person.h"

@implementation Person
+ (void)eat
{
    NSLog(@"调用类方法-eat");
}
+ (void)eat:(int)age
{
    NSLog(@"调用带参类方法-eat%d",age);
}
- (void)eat
{
    NSLog(@"调用对象方法-eat");
}
- (void)eat:(int)age
{
    NSLog(@"调用带参对象方法-eat%d",age);
}
@end

使用消息机制来发送消息

    //对象方法的调用
    Person *p = [[Person alloc]init];
    //平常调用方法
    [p eat];
    //其实底层是这样调用的
    [p performSelector:@selector(eat)];
    //使用运行时发送消息
    objc_msgSend(p, @selector(eat));
    //使用运行时发送带参消息
    objc_msgSend(p, @selector(eat:),10);

    //类方法的调用
    //平常调用方法
    [Person eat];
    //其实底层是这样调用的
    [[Person class] performSelector:@selector(eat)];
    //使用运行时发送消息
    objc_msgSend([Person class], @selector(eat));
    //使用运行时发送带参消息
    objc_msgSend([Person class], @selector(eat:),10);

你可能感兴趣的:(runtime消息机制)