ObjC方法类型编码字符串中的数字是多少?

Eci*_*ana 14 objective-c objective-c-runtime method-signature

我正在阅读Apple 关于Objective-C运行时类型编码字符串文章 ,有些方法在其类型字符串中有数字.

数字v12@0:4@8是什么意思?

dre*_*lax 25

这看起来像这样的setter方法的编码:

- (void) setSomething:(id) anObject
Run Code Online (Sandbox Code Playgroud)

要打破它:

  • v 表示无效返回类型
  • 12 表示参数帧的大小(12个字节)
  • @0表示在参数帧的字节偏移0处存在Objective-C对象类型(这是self每个Objective-C方法中的隐式对象)
  • :4表示在字节偏移量4处有一个选择器(这是_cmd每个方法中隐含的,它是用于调用方法的选择器).
  • @8 表示在字节偏移量8处有另一个Objective-C对象类型.

  • 未来读者需要注意:[bbum表示此时的偏移数字毫无意义](http://stackoverflow.com/a/11527925/603977). (6认同)