有没有更好的方法在OC中写入该属性?

时间:2014-08-28 06:40:39

标签: ios objective-c

我在example.h文件中有这样的属性:@property (nonatomic, assign, readonly) CGRect frame;,我认为这个语句是告诉其他类,frame属性是readonly,它还告诉编译器不需要合成setter方法。 是否可以说类本身可以在.m文件中使用实例变量_frame(self.frame仍然无法使用)?如果是这样,有没有更好的方法来使用此实例变量_frame?重新声明这个属性在类扩展中重写或重新声明类扩展中的实例变量,这样(我发现很多人都这样写,但我不明白这样做有什么好处?):

@interface example () {
    CGRect _frame;
}
@end

@implementation example

或者我只是需要什么都不做?

1 个答案:

答案 0 :(得分:0)

我对财产的理解如下: 1.程序在使用点运算符(。)时查找接收器类中的属性名称。   像这样:tt.frame(例子* tt = [[example alloc] init];)

2.然后编程找到属性名称(用合成方法同名作为属性名称绑定)和实例变量之间的关系。   方法是:@synthesize frame = _frame;
  (框架是属性的名称,_frame是实例变量。属性和实例变量的绑定名称。如果你不这样做,编译器将提供一个实例变量(框架,然后修改这个框架,而不是你设计的_frame)。你选择64位环境。如果你选择32位环境,编译器会给你一个警告)

3.实例变量的调用方法。