Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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.