What are the digits in an ObjC method type encoding string?
Asked Answered
S

1

17

I'm reading Apple's article about Objective-C runtime type encoding strings and some methods have numbers in their type strings.

What do the numbers in v12@0:4@8 mean?

Sprinkler answered 15/7, 2012 at 12:35 Comment(0)
F
26

This looks like an encoding of a setter method like this:

- (void) setSomething:(id) anObject

To break it down:

  • v means void return type
  • 12 means the size of the argument frame (12 bytes)
  • @0 means that there is an Objective-C object type at byte offset 0 of the argument frame (this is the implicit self object in each Objective-C method)
  • :4 means that there is a selector at byte offset 4 (this is the implicit _cmd in every method, which is the selector that was used to invoke the method).
  • @8 means that there is another Objective-C object type at byte offset 8.
Fine answered 15/7, 2012 at 13:6 Comment(3)
So the first number is the argument frame size, and others are offsets...thanks!Sprinkler
Note for future readers: bbum says the offset numbers are meaningless at this point.Workbench
. 12 is not the size of the argument frame, which becomes more clear if you see my question hereDialect

© 2022 - 2024 — McMap. All rights reserved.