目标c中@property的目的

时间:2010-12-02 10:17:36

标签: objective-c properties

查看以下代码;

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

@end

@property (nonatomic , retain ) int ageint age;定义了getter和setter 和@synthesizing它们在实现中给出了getter和setter的自动生成实现。

我不明白的是第二个。第二个属性(@property (nonatomic , retain ) UIPopoverController *popoverController;)生成什么方法? (:

我见过很多程序使用@property除了int,string等对象之外的对象;

可以指导我一个关于此的正确教程。

提前致谢。 (也有人可以告诉我如何在stackoverflow上接受答案)。

3 个答案:

答案 0 :(得分:4)

很难提出比official documentation更好的建议(至少你应该从阅读开始)。

@property (nonatomic , retain ) int age;

真的应该为age ivar声明setter / getter方法,但是这行会给编译器错误,因为你不能为非对象类型声明具有retain属性的属性(更多细节参见文档)

@property (nonatomic , retain ) UIPopoverController *popoverController;

这一行与第一行差别不大 - 它还为popoverController ivar声明了setter和getter方法,并且自动合成的setter将保留popoverController它得到

答案 1 :(得分:1)

如果你有这个:

@property (nonatomic , retain ) UIPopoverController *popoverController;

@synthesize生成的方法将类似于:

-(UIPopoverController*) popoverController
{
    return popoverController;
}

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

答案 2 :(得分:0)

@synthesize始终创建访问者。在你的情况下:

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