zoukankan      html  css  js  c++  java
  • 运行时runtime

    1.在object-c运行时替换私有类的方法

    runtime完全解读

    2.运行时给一个对象增加方法

    //C方法形式定义被增加的方法

    void helloLog(id self, SEL _cmd)

    {

        NSLog(@"helloLog");

    }

    //OC方法形式定义被增加方法

    - (void)helloLog

    {

        NSLog(@"helloLog");

    }

    //需要新增方法的类

    Class newClass = [NSObject class];

    //C方法形式

    class_addMethod(newClass, @selector(helloLog),(IMP)helloLog, "v@:");

     //OC方法形式

    class_addMethod(newClass, @selector(helloLog),(IMP)helloLog, "v@:");

     //调用新增方法

    id instance = [[NSObject alloc] init];

    [instance performSelector:@selector(helloLog) withObject:nil];

    Objective-C运行时定义了几种重要的类型。

    • Class:定义Objective-C类
    • Ivar:定义对象的实例变量,包括类型和名字。
    • Protocol:定义正式协议。
    • objc_property_t:定义属性。叫这个名字可能是为了防止和Objective-C 1.0中的用户类型冲突,那时候还没有属性。
    • Method:定义对象方法或类方法。这个类型提供了方法的名字(就是**选择器**)、参数数量和类型,以及返回值(这些信息合起来称为方法的**签名**),还有一个指向代码的函数指针(也就是方法的**实现**)。
    • SEL:定义选择器。选择器是方法名的唯一标识符。
    • IMP:定义方法实现。这只是一个指向某个函数的指针,该函数接受一个对象、一个选择器和一个可变长参数列表(varargs),返回一个对象

  • 相关阅读:
    F
    Common Subsequence
    Neighbor House
    Robberies(背包)
    Stock Exchange(LIS最长上升子序列问题)
    Compromise(LCS)
    POJ-3356 AGTC (最短编辑距离问题)
    Monkey and Banana(LIS最长上升子序列)
    网络编程之网络协议
    面向对象高级
  • 原文地址:https://www.cnblogs.com/ldc529/p/4313907.html
Copyright © 2011-2022 走看看