oc(iOS)中的类属性 类的成员 /类的字段、属性 定义和使用方法(类似C#、java的类的静态成员变量)

最近一个项目中需要使用到类似 C#、java 那样的类的字段、类的成员变量。

形式如下:

Person.name = "HaHa";

string  aName = Person.name;



首先列一下此文我们要说的纲目,然后逐个解释:

1. 类的字段/属性 简单定义

2. 结合类方法与对象方法,解释 类的字段/属性 使用(调用)形式【会对比 实例方法(对象方法/减号方法)和 实例变量解释】


接下来进入正文,一一解释。


一、类的字段/属性 简单定义

类的成员属性是定义在类的内部、方法外部。如下 Person 类的 .m 文件:

staticNSString *addr;就是类的成员变量。



oc(iOS)中的类属性 类的成员 /类的字段、属性 定义和使用方法(类似C#、java的类的静态成员变量)_第1张图片
oc(iOS)中的类属性 类的成员 /类的字段、属性 定义和使用方法(类似C#、java的类的静态成员变量)_第2张图片

要想实现想C#那样的调用方式,只需要仿照对象的成员变量的写法,在 .h 中定义一个类方法setter方法和一个类方法getter方法,然后在 .m 中实现即可。如上图实现方式。


对比 减号的对象方法,这种  加号的类方法的 "定义形式" 是不是与之非常类似!


二、外部调用方式 - 类似 C# 的调用方式,直接 “类名.属性名” 即可。如下图:


oc(iOS)中的类属性 类的成员 /类的字段、属性 定义和使用方法(类似C#、java的类的静态成员变量)_第3张图片

        这样的  "调用形式"  是不是与 减号对象方法的getter、setter 极其类似!


只是,对于 C# 或 java 中的static变量,在类内部定义时不需要同时写 +getter  、 +setter  方法;在外部调用时只需要类名点变量名   Person.name = ””;

而 oc 中除了定义static的变量之外,还需要手动写  +getter、+setter 并实现,才能在外部使用时 Person.name = @”HaHa”;


个人觉得,这是因为,C# 有命名空间的概念,java 有包的概念,都能通过命名空间的路径找到唯一的目标。(Swift中也增加了命名空间或者名称空间 nameSpace 的概念)


OK,关于 oc 中仿照 C# 静态变量的定义和使用就介绍完毕,希望能帮到大家!

你可能感兴趣的:(oc(iOS)中的类属性 类的成员 /类的字段、属性 定义和使用方法(类似C#、java的类的静态成员变量))