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

method-signature, objective-c, objective-c-runtime

Solution

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.

Problem

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?

Original source

Related problems