您的位置:首页 > 其它

实例变量和属性 区别

2014-11-14 15:14 302 查看
在IOS编程中,很多人没有理解实例变量与属性的区别,我根据自己的经验,这这里与大家分享下这里面的区别,下面我写一个简单的例子:

.h

@interface MyController : UIViewController

{

  UILabel *_myLabel;//这里是实例变量声明

}

@property (nonatomic, retain) UILabel *myLabel;//这里是你的属性声明

@end

.m

@implementation MyController

@synthesize myLabel = _myLabel;

...

@end

相信大家都看到过这样的程序,但我们一般写的程序是下面这样子的:

.h

@interface MyController : UIViewController

{

  UILabel *myLabel;//这里是实例变量声明

}

@property (nonatomic, retain) UILabel *myLabel;//这里是你的属性声明

@end

.m

@implementation MyController

@synthesize myLabel;

...

@end

其实,实例变量跟属性在cocoa里面应该是分开的,而下面这种我们平时写的这种代码因为实力变量跟属性是同一个名字,所以就不用使用等号来把实例变量赋值给属性了,实例变量一般是用在一个类的内部,而我们平时用的时候会在其他的类里面创建另一个类的对象,比如我们想改变我们上面创建的这个类的myLabel的text属性,这时,我们使用的是什么呢?要讲清楚这个问题,使用我们最上面的那段代码是最好的,现在我们假设已经创建了MyController的一个对象,叫做myController,要改变myLabel的text应该如下:

myController.myLabel.text = @"这是改变了之后的内容";

看清楚,这里使用的是myLabel(属性),不是_myLabel(实例变量),在MyController这个类里面"self."的时候也只能属性,实例变量都是assign类型的,你需要直接alloc内存赋值给它,同样在最后dealloc里面的release的也是实例变量而非属性,属性其实就是在外部或者内部调用时候使用实例变量的一种方式(个人理解),而真正占用内存的却是实例变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: