Ok, this is a little weird - you're generating an ivar with the same name as what would be auto synthesized by the property declared in the header. Granted, you've overwritten the getter and setter, so the property won't create said ivar, but it's still something you should avoid.  The overridden setter also means it's up to you to make sure bad things don't happen if it's accessed by multiple threads, i.e. make it nonatomic