最近一个项目中需要使用到类似 C#、java 那样的类的字段、类的成员变量。
形式如下:
Person.name = "HaHa";
string aName = Person.name;
首先列一下此文我们要说的纲目,然后逐个解释:
1. 类的字段/属性 简单定义
2. 结合类方法与对象方法,解释 类的字段/属性 使用(调用)形式【会对比 实例方法(对象方法/减号方法)和 实例变量解释】
接下来进入正文,一一解释。
一、类的字段/属性 简单定义
类的成员属性是定义在类的内部、方法外部。如下 Person 类的 .m 文件:
staticNSString *addr;就是类的成员变量。
要想实现想C#那样的调用方式,只需要仿照对象的成员变量的写法,在 .h 中定义一个类方法setter方法和一个类方法getter方法,然后在 .m 中实现即可。如上图实现方式。
对比 减号的对象方法,这种 加号的类方法的 "定义形式" 是不是与之非常类似!
二、外部调用方式 - 类似 C# 的调用方式,直接 “类名.属性名” 即可。如下图:
这样的 "调用形式" 是不是与 减号对象方法的getter、setter 极其类似!
只是,对于 C# 或 java 中的static变量,在类内部定义时不需要同时写 +getter 、 +setter 方法;在外部调用时只需要类名点变量名 Person.name = ””;
而 oc 中除了定义static的变量之外,还需要手动写 +getter、+setter 并实现,才能在外部使用时 Person.name = @”HaHa”;
个人觉得,这是因为,C# 有命名空间的概念,java 有包的概念,都能通过命名空间的路径找到唯一的目标。(Swift中也增加了命名空间或者名称空间 nameSpace 的概念)
OK,关于 oc 中仿照 C# 静态变量的定义和使用就介绍完毕,希望能帮到大家!