To be precise, when you write [myProperty doSomeAction] , you do not actually access this property, but directly access the instance variable (used as the base property variable).
You only access the property (through its setter and getter) using the dotted notation [self.myProperty doSomeAction] (or by calling setter / getter explicitly as [[self myProperty] doSomeAction] , which is the exact equivalent, since this is what the compiler translates to when compiling the code)
So, when you write [myProperty doSomeAction] , since it directly accesses the variable - unlike [self.myProperty doSomeAction] , which calls getter from myProperty , thereby making an additional method call / send message - then yes in theory it will be faster than you will receive one sending messages.
But in practice, you will not see any improvement, so there is no need to consider accessing the variable directly (and this will make you free flexibility if you want to implement it in another way later)
In addition, if you use modern Runtime (if you are encoding any version of iOS, the obsolete Runtime is used only in 32-bit Mac OSX), then explicitly not specifying a reference variable for the property is no longer required. That way, you can declare @property in .h and @synthesize it in .m without any instance variable (the compiler will generate it for you at compile time), and in that case you cannot call the (non-existent) instance variable! (at least not up to the @synthesize directive)
source share