Because of invoking conventions at least (with ARC, there are more reasons, but invoking conventions has always been a problem).
Perhaps you were told that it [foo someMethod]translates into a function call:
objc_msgSend(foo, @selector(someMethod))
, , . , ( , , ). , , objc_msgSend, ( ARM, Intel), objc_msgSend_stret, Intel ( ARM, ), objc_msgSend_fpret. , ( ) .
, ( ObjC, varargs... , varargs). , . varargs, . .
ObjC , ( , ), ( , ). ObjC C, , .
, ( ) . :
- (MyPointObject *)point;
- (CGPoint)point;
, . (, id), , -point, . , , ( ).
, , objc_msgSend_stret objc_msgSend_fpret. . , bbum objc_msgSend. , ARC, x86_64 ( ), - .