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 trialChristopher Ruggles
1,253 PointsHow can property be designated to a class?
I am trying to answer this challenge. Now sure how to designate a class for a property.
Finally, we have a class named 'Bling' which needs to have a property called 'ruby'. Switch over to 'Bling.h' and add a property named 'ruby' that belongs to the class 'Ruby'.
2 Answers
Kristen Law
16,244 PointsA property can be created with @property
, and it goes between the @interface
and @end
similar to this video at around 1:35.
Michael Hulet
47,913 PointsAbove the @interface
declaration, you need to tell the compiler what you're talking about when you declare your @property
later on. This is done using @class
, in this case. When you do that, the compiler will know what you're talking about later on. This code for that file passes:
//The below line is where you tell the compiler about the Ruby class. It's kinda like using #import "Ruby.h", but this way, you don't unnecessarily get a bunch of stuff from Ruby
@class Ruby;
@interface Bling : NSObject
//Here is where you declare your @property. From left to right, saying it's a property automatically gives you an instance variable, and setter and getter methods for that variable. What's in the parentheses says that it's not thread-safe (which has to do with multithreading) and tells the system to hold a strong pointer to it. You'll learn more about what all that means later. Then, you're saying that it's an instance of the Ruby class, and finally naming the property "ruby"
@property (nonatomic, strong) Ruby *ruby;
@end