实例变量和属性 区别
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的也是实例变量而非属性,属性其实就是在外部或者内部调用时候使用实例变量的一种方式(个人理解),而真正占用内存的却是实例变量。
.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的也是实例变量而非属性,属性其实就是在外部或者内部调用时候使用实例变量的一种方式(个人理解),而真正占用内存的却是实例变量。
相关文章推荐
- OC 中实例变量与属性之间的区别
- 属性和实例变量的区别
- iOS 中成员变量、实例变量、属性 三者区别与联系
- OC中属性(property)与实例变量(instance variable)之间的区别
- 属性和实例变量的区别
- iOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系
- iOS成员变量、实例变量、属性变量三者的联系与区别
- iOS 成员变量,实例变量,属性变量的区别,联系
- IOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系
- 影片剪辑实例的name属性与实例变量名的区别
- iOS基础-属性与实例变量区别
- 【转截】iOS成员变量、实例变量、属性变量三者的联系与区别
- Objective-C 实例变量与属性的区别
- ios -- 成员变量、实例变量与属性的区别
- iOS 成员变量,实例变量,属性变量的区别,联系
- iOS实例变量属性参数的区别
- iOS 成员变量,实例变量,属性变量的区别,联系
- ios 属性和实例变量的区别
- 实例变量和成员属性之间的区别
- 静态变量,与实例变量区别,实例属性初始化