存档

2015年10月 的存档

Objective-C基础语法 类

2015/10/28 7,661

 一、类声明

Objective-C并没有像其他面向对象语言那样提供声明类的专用关键字或者语法,而是用编译处理指令来实现,特征是类声明语句都须以@符号开始

类声明的编译处理指令以 @interface 开始,以 @end 结尾,在这之间代码便是类属性和方法的声明。

属性声明

属性是获取和(或)设置类实例状态的接口。

语法如下:

//TODO 属性的特性可以设置属性的存储主义和其他行为。

方法声明

语法如下:

例如:

  • 方法类型 -表示该方法为实例方法 +表示该方法为类方法
  • 返回值类型和参数类型放入()中
  • C函数返回值缺省为int型。OC中缺省参数为id型的对象类型。
  • 习惯上类名首字母大写,方法名全部小写​。

二、类实现

类的实现要在@implementation这个编译处理指令中进行

变量声明

类的实例变量可以在类的接口或实现部分中声明。不过在类的公有接口中声明变量违反了OOP的特性之一—封装。所以最好在类的实现部分声明实例变量。类可以没有实例变量,这时{}可以忽略。

Object-C提供多种编译器指令设置变量的作用范围(即变量的访问控制):

  • private: 只能在声明它的类中被访问
  • protected: 只能在声明它的类以及其子类中被访问
  • public: 可以被任意代码访问(这会违反类的封装原则)
  • package: 可以被同一个包内的其它类实例或函数访问。这种作用范围通常用于库或框架类。

当用变量保存对象的时候,应该始终使用指针类型。Objective-C对变量包含的对象支持强弱两种类型。强类型指针的变量类型声明包含了类名。弱类型指针使用id作为对象的类型。弱类型指针常用于类的集合,在集合中对象精确的类型可以是未知的。

属性定义

在大多数情况下,属性是由变量支持的,所以,属性定义中会含有属性的getter,setter方法的定义、变量的声明,并在getter/setter方法中使用这个变量。OC提供了多种定义属性的方式:显式定义、关键字补全、自动补全。

  1. 显式定义: 在相应的代码中明确定义属性的访问器(getter,setter)方法。
  2. 关键字补全: 通过使用@synthesize关键字,可以使编译器自动生成属性定义。属性代码会在相应的类实现部分自动补全。
  3. 自动补全: Clang/LLVM(4.2+)是苹果公司推荐使用的OC编译器,他支持对已声明的属性进行自动补全。这意味着编译器可以自动补全以下已声明的属性:没有使用关键字(如@synthesize)进行代码补全的属性、不是通过@dynamic指令自动生成的属性。 编译器会自动补全已声明的方法和相应的变量。

继续阅读