2022 / 10 / 04
OC成员变量与属性
成员变量与属性
在oc中这两个是有点区别的。
- 成员变量就是我们在开发中,类似下面这样定义的变量,例如:
@interface Person : NSObject
{
@public
NSString *_name;
CGFloat _age;
}
@end
_name, _age 便是成员变量。
- 属性就是在开发中,我们用 @property 关键字声明的变量,如:
@interface PlayerView : UIView
@property (nonatomic, strong) AVPlayer *player;
@property (nonatomic, strong, readonly) AVPlayerLayer *playerLayer;
@end
该方法会自动生成 _player 和 _playerLayer 成员变量,player,playerLayer 便是我们声明的属性。
现在开发中,我看老手基本上都是使用 property 声明属性的了。
.h文件与.m文件中的@interface声明成员变量的区别?
在.m中的 @interface 部分为 类扩展(class extention)。
其被设计出来就是为了解决两个问题的.
-
定义类私有变量,方法的地方。(主要也是这个作用,定义私有变量。)
-
实现
public readonly, private readwrite的property(意思是在h头文件中定义一个属性对外是readonly的,但在类的内部希望是可读写的,所以可以在m源文件中的@interface部分重新定义此属性为readwrite,此时此属性对外是只读的,对内是读写的)。
最后,若在此部分申明变量和属性,但申明的变量,属性和方法均为私有的,只能够被当前类访问,相当于private。