iVar property, access via self?

Solution 1:

If you have a defined property for an ivar, you should use it rather than accessing the ivar directly. That allows subclasses to override the setter/getter and do something different to just fetching the value from the ivar.

The only exception is in init methods and dealloc.

Solution 2:

Using

[[self foundArray] addObject:eachObject];

you just add extra call to the getter method, which is unnecessary in most cases here I think. On the other hand unless you implement your own custom getter and do some weird things there the overhead of this construct is very small so in practice it is just matter of style in my opinion. (I personally would not use property here)

Solution 3:

The accessor-method is very convenient if you ever subclass, or have others reusing your code and they want to override your functionality.