一行代码获取Block的签名和虚拟内存地址:
NSString *blockDescription = [ZLJBlockPrinter printBlock:_shareBlock];
NSLog(@"%@",blockDescription);
返回效果
kSignature:<NSMethodSignature: 0x281aaa9c0>
number of arguments = 4
frame size = 224
is special struct return? NO
return value: -------- -------- -------- --------
type encoding (v) 'v'
flags {}
modifiers {}
frame {offset = 0, offset adjust = 0, size = 0, size adjust = 0}
memory {offset = 0, size = 0}
argument 0: -------- -------- -------- --------
type encoding (@) '@?'
flags {isObject, isBlock}
modifiers {}
frame {offset = 0, offset adjust = 0, size = 8, size adjust = 0}
memory {offset = 0, size = 8}
argument 1: -------- -------- -------- --------
type encoding (B) 'B'
flags {}
modifiers {}
frame {offset = 8, offset adjust = 0, size = 8, size adjust = -7}
memory {offset = 0, size = 1}
argument 2: -------- -------- -------- --------
type encoding (i) 'i'
flags {isSigned}
modifiers {}
frame {offset = 16, offset adjust = 0, size = 8, size adjust = -4}
memory {offset = 0, size = 4}
argument 3: -------- -------- -------- --------
type encoding (@) '@"NSString"'
flags {isObject}
modifiers {}
frame {offset = 24, offset adjust = 0, size = 8, size adjust = 0}
memory {offset = 0, size = 8}
class 'NSString'
返回显示4个参数 要减去1个 return
所以下面得出 callback 参数为:
^(BOOL isok, int code, NSString*msg) {
}
查看官方文档访问点击查看更多对照表信息