标签:
成员变量,本例中的是实例成员变量,是作用于整个类对象内的。从生命周期来看,它比局部变量要长一些,但它默认是私有的,其他对象是无法访问到的。
比如你一个变量放在@interface 中,你申请一个实体时,变量存活周期跟你实体一样。
因为成员变量的作用域是整个类对象内,所以在ARC环境下OC里面的成员变量应该是 strong属性的。
@interface ViewController : UIViewController
{
//成员变量
NSArray *array1;
}
//属性变量
@property (nonatomic,strong) NSArray *array2;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
array1 = [[NSArray alloc] initWithObjects:@"abcde", nil];
array2 = [[NSArray alloc] initWithObjects:@"123abc", nil];
{
// 局部变量
NSArray *array1 = [[NSArray alloc] initWithObjects:@"12345", nil];
}
NSLog(@"\narray1 : %@\n array2 : %@",array1,array2);
}
成员变量和属性变量是完全一样的,别被obj-c
2.0的灵活写法给误导了。
但是属性变量可以作为方法名字,也就是可以有其他名字。
看到一篇文章:
@interface 中是成员变量
@implementation 是全局变量
作用域和存活区间的问题
比如你一个变量放在@interface 中,你申请一个实体时,变量存活周期跟你实体一样
在@implementation 中,因为是全局,所以一直存在
非常感谢!
作用域,就是这个变量在存活区域,
比如说成员变量,就是放在@interface,作用域是类里面
全局变量,是整个程序
临时变量一般是函数内
@implementation
testClass{
UIView *_test;
}
这样的变量应该不是全局的吧?
@implementation testClass{ UIView *_test; }
这个情况比较少个,不推荐,这个情况是成员变量
但是默认是@private
其实都是成员变量,放在@implemetation里的是私有的而已。都是成员变量,只是放在@implemetation中的变量无法被子类继承
标签:
原文地址:http://blog.csdn.net/jeffasd/article/details/51329630