在Objective-C的类与对象的概念中. 成员变量与属性的区别与联系一直没有搞清楚. 直到学习了慕课网上的这个课程Objective-C面向对象初体验, 才算真正有了点感觉了. 最关键的结论就是: 类内使用成员变量{}, 类外使用属性@property.
成员变量
成员变量及其get方法.
首先, 我们来看下基本的类成员变量及其使用.
// People.h
@interface People : NSObject
{
NSString *_peopleName;
}
@end
在.m中不做任何事情, 然后在main.m调用_peopleName成员变量,
(下图可以看出, 调用类的成员变量时, 使用 . 语法符号会出错, 必须使用->来调用):
改为->, 调用p1->_peopleName的结果如下:
即, 该_peopleName默认是protected, 外部调用需要设置为@public. 改动一下:
// People.h
@interface People : NSObject
{
@public
NSString *_peopleName;
}
@end
调用p1->_peopleName的结果如下:
2015-05-06 15:58:41.039 memberAndProperty[2851:304100] p1._peopleName : (null)
类内部使用成员变量
如果想在init中初始化_peopleName, 则在People.m中:
// People.m
- (instancetyp