If an ivar is to be used globally within the class, but will never be accessed by other classes, are we still supposed to use properties?
            Asked
            
        
        
            Active
            
        
            Viewed 112 times
        
    2 Answers
3
            It is generally a good idea, as the generated accessors will take care of things like memory management and KVO for you. You can put the property in a class extension so other classes can't use it.
        Chuck
        
- 234,037
 - 30
 - 302
 - 389
 
- 
                    So I guess it's not "necessary" but "good practice". I was using properties for everything but I noticed in apple example code some iVars are not declared as properties. I couldn't find any convention behind their choices. – TijuanaKez Mar 13 '12 at 05:18
 - 
                    Yes. The memory management benefits for objects in non-ARC environments is the big one, because it's just so easy to flub that when you don't concentrate that responsibility in a method. – Chuck Mar 13 '12 at 05:22
 - 
                    I would also mention that if your code contains `@private` directive for your iVars, you're probably doing something wrong. – Holly Oct 19 '13 at 19:00
 
1
            
            
        For me, it depends on what the instance variable will be used for.
If it's an object representing some data, then I will always use a property.
If it's just a simple BOOL for some internal bookkeeping by a couple of methods in the class, then I won't create a property for it.
        Abhi Beckert
        
- 32,787
 - 12
 - 83
 - 110