Objective c 目标c中@财产的目的
查看下面的代码Objective c 目标c中@财产的目的,objective-c,properties,Objective C,Properties,查看下面的代码 @interface testViewController : UIViewController { int age; UIPopoverController *popoverController; } @property (nonatomic , retain ) int age; @property (nonatomic , retain ) UIPopoverController *popoverController; @end @属性(非原子,保留
@interface testViewController : UIViewController
{
int age;
UIPopoverController *popoverController;
}
@property (nonatomic , retain ) int age;
@property (nonatomic , retain ) UIPopoverController *popoverController;
@end
@属性(非原子,保留)int-age
定义int-age的getter和setter代码>
而@在implementation中合成它们将自动生成getter和setter的实现
我不明白的是关于第二个。第二个属性(@property(非原子,保留)UIPopoverController*popoverController;
)生成什么方法?(:
我见过很多程序使用@property
来处理int、string等以外的对象
你能给我一个关于这方面的指导吗
提前谢谢。(还有谁能告诉我如何接受关于stackoverflow的答案)。很难再提出更好的建议(至少你应该从阅读开始)
实际上应该为age ivar声明setter/getter方法,但这一行将给出编译器错误,因为您不能为非对象类型声明带有retain属性的属性(有关详细信息,请参阅文档)
这一行与第一行没有太大区别-它还声明了popoverController ivar的setter和getter方法,并且自动合成的setter将保留它得到的popoverController。很难再提出更好的建议(至少你应该从阅读开始)
实际上应该为age ivar声明setter/getter方法,但这一行将给出编译器错误,因为您不能为非对象类型声明带有retain属性的属性(有关详细信息,请参阅文档)
这一行与第一行没有太大区别-它还声明了popoverController ivar的setter和getter方法,并且自动合成的setter将保留它得到的popoverController始终创建访问器。在您的情况下:
- (void) setPopoverController:(UIPopoverController *)value;
- (UIPopoverController *) popoverController;
@synthesis
始终创建访问器。在您的情况下:
- (void) setPopoverController:(UIPopoverController *)value;
- (UIPopoverController *) popoverController;
如果您有:
@property (nonatomic , retain ) UIPopoverController *popoverController;
@synthesis生成的方法类似于:
-(UIPopoverController*) popoverController
{
return popoverController;
}
-(void) setPopoverController: (UIPopoverController*) newValue
{
[newValue retain];
[popoverController release];
popoverController = newValue;
}
如果您有:
@property (nonatomic , retain ) UIPopoverController *popoverController;
@synthesis生成的方法类似于:
-(UIPopoverController*) popoverController
{
return popoverController;
}
-(void) setPopoverController: (UIPopoverController*) newValue
{
[newValue retain];
[popoverController release];
popoverController = newValue;
}