Property(属性)
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
创建一个数组的感觉真是太棒了,但别高兴的太早,因为我们现在的代码非常的低效。当我们每点击一次按钮,都会新建一个数组,那么设想一下,当这个数组里面包含了成千上万个数组,当我们每次点击按钮,新建这个数组的同时,也会新建成千上万个对象,这个行为非常消耗系统CPU和内存的资源。
为了解决这个问题,今天我们来学习一个新的概念:Property
(属性)。
在讲Property之前,我们要先来接触另一个新的概念:作用域!
作用域(Scope),通常指一个打开一个关闭的大括号:{ }
,在某个作用域内创建的对象,在作用域的外部是不能够进行访问的。
回到我们的水晶球应用中,找到创建数组的那段代码,我们发现,这段代码是在buttonPressed
这个方法的作用域内的,也就是说,这个数组我是不能在buttonPressed
以外进行访问的。
下面,我们来尝试一下,在buttonPressed
方法内访问数组和在方法外访问数组有什么区别。
1、让我们来打开水晶球应用,点击ViewController.h
文件,在@interface
和@end
之间添加如下代码:
@property (strong,nonatomic)NSArray *predictionArray;
2、接下来点击ViewController.m
文件,在@implementation ViewController
下面一行添加如下代码:
@synthesize predictionArray;
3、然后将如下代码从buttonPressed
方法中剪切到viewDidLoad
方法中:
predictionArray = [[NSArray alloc] initWithObjects:@"it is certain",
@"it is decidely so",
@"All signs say YES",
@"The stars are not aligned",
@"My reply is no",
@"It is doubtful",
@"Better not tell you now",
@"Concentrate and ak again",
@"Unable to anwser now", nil];
并将predictionArray
修改成self.predictionArray
。
4、将buttonPressed方法中的三处predictionArray
修改成self.predictionArray
。
让我们运行一下,结果和之前是一样的,但解决了每点击按钮便创建数组这种低效的方法,而用属性代替,让我们跟随Lucy老师去看个究竟吧…
在线练习
{$ activeFileHint $}