Objective-C | 青训营笔记

80 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第1天

Class的编写

OC中类由两部分组成:

  • 1.类的定义(界面 interface)
  • 2.类的实现(implementation)

类声明以@interface开头,以 @end 结束。 实现以@implementation开头,以@end结束。

@interface是一个声明,可以声明属性、变量、函数方法。 每个interface声明的方法都要去实现。

.h 文件 和 .m 文件

@interface类的定义放在 .h 文件时,就可以被其他的 .h .m文件 import,如果放在.m文件里,那么只能在这个文件里使用。

@implementation实现只能放在.m文件

.m 文件中,使用其他的类的函数需要在顶部引入.h文件

.m文件不能被引入。

消息传递

objective-c使用[]进行消息传递

C++中:

obj.method(argument);

Objective-C :

[obj method: argument]; //调用obj类的method方法并传递argument变量

字符串

单个字符被单引号包括,字符串被双引号包括。然而,大多数Objective-C通常不使用C语言风格的字符串。大多数框架把字符串传递给NSString对象。

Nsstring* myString = @"My String\n";
Nsstring* anotherString = [Nsstring stringWithFormat:@"%d %s"1, @"String"];

创建对象

MyObject * my = [[MyObject alloc] init];

使用alloc 和 init两个消息进行创建:alloc分配内存,init进行初始化。

方法

Objective-C 中的类可以声明两种类型的方法:实例方法和类方法。 实例方法就是一个方法在类的一个具体实例的范围内执行。也就是说,在调用一个实例方法前,你必须首先创建类的一个实例。而类方法不需要创建一个实例。

img

协议(Protocol)

协议是一组没有实现的方法列表,分为两种:

  • 非正式协议(可以选择性实现的协议,已废弃)

  • 正式协议(通过@optional 自主选择是否实现)

协议以@protocol开始,@end结束,中间包含未实现的方法列表

@protocol Locking
- (void)lock;
- (void)unlock;
@end