OC成员变量与属性

成员变量与属性

在oc中这两个是有点区别的。

  • 成员变量就是我们在开发中,类似下面这样定义的变量,例如:
1
2
3
4
5
6
7
@interface Person : NSObject
{
@public
NSString *_name;
CGFloat _age;
}
@end

_name, _age 便是成员变量。

  • 属性就是在开发中,我们用 @property 关键字声明的变量,如:
1
2
3
4
5
6
@interface PlayerView : UIView

@property (nonatomic, strong) AVPlayer *player;
@property (nonatomic, strong, readonly) AVPlayerLayer *playerLayer;

@end

该方法会自动生成 _player_playerLayer 成员变量,playerplayerLayer 便是我们声明的属性。

现在开发中,我看老手基本上都是使用 property 声明属性的了。

.h文件与.m文件中的@interface声明成员变量的区别?

在.m中的 @interface 部分为 类扩展(class extention)。

其被设计出来就是为了解决两个问题的.

  1. 定义类私有变量,方法的地方。(主要也是这个作用,定义私有变量。)

  2. 实现 public readonly, private readwriteproperty(意思是在h头文件中定义一个属性对外是readonly的,但在类的内部希望是可读写的,所以可以在m源文件中的@interface部分重新定义此属性为readwrite,此时此属性对外是只读的,对内是读写的)。

最后,若在此部分申明变量和属性,但申明的变量,属性和方法均为私有的,只能够被当前类访问,相当于private。


OC成员变量与属性
https://iplus-studio.top/2022/10/04/OC成员变量与属性/
作者
邓伟彬
发布于
2022年10月4日
许可协议