Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Objective-C Basics (Retired) Introduction to Objective-C Introducing @property

2 Answers

Stone Preston
Stone Preston
42,016 Points

When using properties, a setter, a getter, and an ivar (instance variable) are created behind the scenes. When you declare a property

@property (nonatomic, strong) NSArray *someArray

a getter method called someArray, a setter method called setSomeArray and an ivar called _someArray are all created behind the scenes for you when its compiled.

You can use [self someArray] or self.someArray to use the getter method of someArray to access that ivar, the setter method [self setSomeArray] or self.someArray to use the setter method to set that ivar, or you can use _someArray to access that ivar directly.

You can also override the default setters and getter that get created and implement your own functionality. If you are overriding the setter and getter methods for a property, you need to access the ivar directly inside that method

Basically getters and setters are helpful when you want to run some code whenever the variable is get or set, like sending a notification to your app whenever a certain variable is changed and stuff like that.