具体可见 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html

//规则: 返回值 函数名: 具体参数个数 如 (NSString*)fun1:(NSString*)param1对应 “@@:@”,打印如下

<NSMethodSignature: 0x7a2dc790>
    number of arguments = 3
    frame size = 12
    is special struct return? NO
    return value: -------- -------- -------- --------
        type encoding (@) '@'
        flags {isObject}
        modifiers {}
        frame {offset = 0, offset adjust = 0, size = 4, size adjust = 0}
        memory {offset = 0, size = 4}
    argument 0: -------- -------- -------- --------
        type encoding (@) '@'
        flags {isObject}
        modifiers {}
        frame {offset = 0, offset adjust = 0, size = 4, size adjust = 0}
        memory {offset = 0, size = 4}
    argument 1: -------- -------- -------- --------
        type encoding (:) ':'
        flags {}
        modifiers {}
        frame {offset = 4, offset adjust = 0, size = 4, size adjust = 0}
        memory {offset = 0, size = 4}
    argument 2: -------- -------- -------- --------
        type encoding (@) '@'
        flags {isObject}
        modifiers {}
        frame {offset = 8, offset adjust = 0, size = 4, size adjust = 0}
        memory {offset = 0, size = 4}

@property (readonly) NSUInteger numberOfArguments;

//参数个数

- (const char *)getArgumentTypeAtIndex:(NSUInteger)idx NS_RETURNS_INNER_POINTER;

//取参数类型

@property (readonly) NSUInteger frameLength;

- (BOOL)isOneway;

@property (readonly) const char *methodReturnType NS_RETURNS_INNER_POINTER;

//返回值类型

@property (readonly) NSUInteger methodReturnLength;

//返回长度

二、NSInvocation对原来签名的方法执行新的方法,必须指定Selector和Target,invoke或invokeWithTarget执行

+ (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)sig;
//类方法 生成签名方法实例
@property (readonly, retain) NSMethodSignature *methodSignature;
//返回包装的签名方法
- (void)retainArguments;
@property (readonly) BOOL argumentsRetained;

@property (nullable, assign) id target;

//返回对象

@property SEL selector;
//返回包装的SEL
- (void)getReturnValue:(void *)retLoc;

//返回签名方法的返回值

- (void)setReturnValue:(void *)retLoc;

//设置签名方法的返回值
- (void)getArgument:(void *)argumentLocation atIndex:(NSInteger)idx;

//返回签名方法的参数 index=2,取第一个参数

- (void)setArgument:(void *)argumentLocation atIndex:(NSInteger)idx;
//设置签名方法参数
- (void)invoke;

//执行方法

- (void)invokeWithTarget:(id)target;

//指定对象执行 相当于 setTarget和invoke

三 、NSObject类的方法

- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector //中进行未定义方法的封装

- (void)forwardInvocation:(NSInvocation *)anInvocation;//对封装的方法进行调用

http://blog.csdn.net/bigtiger1648/article/details/51084957

最新文章

  1. HDU 2045 不容易系列之(3)―― LELE的RPG难题(递推)
  2. 分享一下自己用c++写的小地图
  3. strftime 日期时间格式化
  4. spring mvc 深入学习
  5. linux学习之-vsftp
  6. asp.net 之
  7. php array转json、xml
  8. IE9 不F12打开控制台,代码不执行。打开后正常
  9. PHP cURL应用实现模拟登录与采集使用方法详解
  10. centos python nginx uwsgi
  11. ORACLE 检查数据库表中是否存在不规范字 段的语句参考.sql
  12. linux扩展lvm磁盘
  13. Keil C51库函数原型列表
  14. feof()和EOF的用法(转载)
  15. InPageError c000009c使用chkdsk修复磁盘
  16. Android 根据规划 Touch 分配和消费机制的事件
  17. java中难度大一点的面试题
  18. ReactiveSwift源码解析(六) SignalProtocol的take(first)与collect()延展实现
  19. 【redis】redis配置文件参数解析
  20. Deepin 15.4 安装 Double Commander

热门文章

  1. css3子级高度与父级同高,内容垂直居中
  2. 「JavaSE 重新出发」05.03 反射
  3. 从Dinnr失败看产品市场可行性认知有哪些不足
  4. swift使用查阅资料备份4
  5. Unity 自己旋转 方法
  6. POST和GET详解
  7. BZOJ 4817 [SDOI2017]树点涂色 (LCT+线段树维护dfs序)
  8. 为什么在index.jsp里面引入了common.js,在item-add.jsp以及其他一些jsp文件里面就不需要引入common.jsne ?
  9. fensorflow 安装报错 DEPENDENCY ERROR
  10. Image Processing for Very Large Images