They both do the same thing, return the value of an object's property called property. So, what is the difference other than syntax? Same thing also happens with arrays,
[[numberArray objectAtIndex:indexInt] integerValue]
is the same as
((NSNumber*)numberArray[indexInt]).integerValue
At least it has been the same so far.