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

What is instance in objective-c

I know this seems kind of stupid but I just cannot understand what an instance variable is.

3 Answers

Here is a good explanation copied from a book of mine. It describes the differences between properties vs instance variables:

Properties and instance variables have a lot in common. In fact, when you create a property, it is β€œbacked” by an instance variable. That means your slider property stores its value in an instance variable named _slider (note the leading underscore). This instance variable was automatically added to the view controller by the Objective-C compiler. Why? Well, a property needs to store its value somewhere and an instance variable is a good place for that. You can tell the difference between the two because properties are always accessed using self. This uses the property:

self.slider.value = 50;

This uses the backing instance variable directly:

_slider.value = 50;

So what is the added benefit of using a property over an instance variable? There are several reasons but mainly instance variables are supposed to be used only by the insides of an object. Other objects aren’t intended to see them or use them. Properties, however, can be accessed by other objects that are outside of your view controller.

It's important to note that instance variables belong to one instance of a class. If you have several pointers to the same type of object (class) that doesn't use a singleton pattern each instance of that class gets its own value.

In other words, you can think of an instance variable as just a variable that lives within or is returned from a method of a specific class. Each time you create or instantiate an object of class, you will set the value of its instance variables.

If you have a method which returns an instancetype (e.g. Playlist.m - (instancetype)initWithIndex:(NSUInteger)index ), instancetype here means that you intend to initialize a variable with a specific class and return this instance when the method is finished.

While watching the videos, I became confused when they started using the term "backing instance variable." I'm not sure this concept was convered. I found this page within Apple's developer guide to be helpful.