SRI
SRI

Reputation: 1532

purpose of @property in objective c

Look a the below code;

@interface testViewController : UIViewController
{
     int age;
     UIPopoverController *popoverController;
}
@property (nonatomic , retain ) int age;
@property (nonatomic , retain ) UIPopoverController *popoverController;

@end

@property (nonatomic , retain ) int age defines getters and setters for int age; and @synthesizing them in implemetation gives the autogenerated implementation of the getter and setter.

what i dont understand is about the second one. what methods does the second property (@property (nonatomic , retain ) UIPopoverController *popoverController;) generate? (:

i have seen lot of programs that use @property with objects apart from int, string etc;

can any guide me to a proper tutorial about this.

Thanks in advance. (also can somebody tell me how to accept answers on stackoverflow).

Upvotes: 1

Views: 702

Answers (3)

JeremyP
JeremyP

Reputation: 86651

If you have this:

@property (nonatomic , retain ) UIPopoverController *popoverController;

the methods generated by @synthesize will be something like:

-(UIPopoverController*) popoverController
{
    return popoverController;
}

-(void) setPopoverController: (UIPopoverController*) newValue
{
    [newValue retain];
    [popoverController release];
    popoverController = newValue;
}

Upvotes: 2

Georg Schölly
Georg Schölly

Reputation: 126085

@synthesize always creates the accessors. In your case:

- (void) setPopoverController:(UIPopoverController *)value;
- (UIPopoverController *) popoverController;

Upvotes: 0

Vladimir
Vladimir

Reputation: 170819

It is difficult to advise anything better then official documentation (at least you should start with reading it).

@property (nonatomic , retain ) int age;

Is really supposed to declare setter/getter methods for age ivar, but that line will give compiler error as you can't declare property with retain attribute for non-object types (see docs for more details)

@property (nonatomic , retain ) UIPopoverController *popoverController;

This line does not differ much from the 1st one - it also declares setter and getter methods for popoverController ivar, and automatically synthesized setter will retain popoverController it gets

Upvotes: 4

Related Questions