对属性的深入理解

真正开发iOS刚好满一年,这一年的过程就是囫囵吞枣般学习新知识,翻找博客,把一些功能塞到程序中。虽说项目完成了好几个,但是基础还是相当薄弱。现在去看一些iOS的基础博客立即恍然大悟,对开发中碰到的一些难以理解的报错有了深刻的理解。下面开始正题:

1.初用

从我学iOS开始,编写一个控件、一个字符串或是一个数组都是如下形式:

@property (strong, nonatomic)  UILabel *resultLabel;

再后来需要在类中添加可变常量时,我都会选择如下方式,编写起来更加方便而且与类属性分别开。

@implementation BakeCurveViewController
{
    double leftAxisMax;
    NSInteger xAxisMax;
}

或是

static BOOL isRelaOn = NO;

2.深入理解

@interface MyViewController :UIViewController
{
    UIButton *myButton;//实例变量
}
@property (nonatomic, retain) UIButton *myButton;
@end

在iOS5以前,声明一个属性是需要同时声明对应的实例变量的。iOS5后,苹果就不再需要为属性声明实例变量了,它会自动为属性生成一个以下划线开头的实例变量,即_myButton。同时也会自动生成setter、getter方法。

@synthesize在iOS4.4就已经被@property代替了,@synthesize的功能主要有2个作用:生成成员变量setter、getter方法;生成实例变量;所以现在@synthesize基本不再使用了

3.一些规范

对自己以后的代码规范:

1.如果只是一些简单的私有变量,在implementation里声明,简化代码并且阅读性更强

2.公有属性在.h文件中声明,可以被其他类调用

3.需要生成setter和getter的私有属性,就在.m的interface中用@property声明

 

猜你喜欢

转载自blog.csdn.net/u012380572/article/details/83927491