这是我参与「第四届青训营-iOS专场」笔记创作活动的第1天。我将会简单讲解一下iOS中OC编程语言的基本内容。
一、OC中class的编写
编写一个Objective-C的类会由两部分组成:
1. 类的定义或叫做介面 Interface
- 介面是由
@interface开头与@end结尾,Interface只是一个声明,可以声明属性, 变量和函数方法,它并不对声明的任何方法进行实现
注意:一个类它可以拥有多个Interface,你可以将不同功能的函数分散,写在多个Interface中,但是每一个Interface都要有一个相对应的Implementation。
语法:
@interface 类名:NSObject
{
//这类事物拥有的共同的特征,将他们定义为变量
//变量名一定要以_开头
数据类型 变量名1;
数据类型 变量名2;
…
}
将方法的声明写在这里(类的功能)
@end
2. 类的实现 Implementation
- 实现是由
@implementation开头和@end结尾,基本上你在interface声明的方法,都需要去做实现。你可以添加interface中没有声明的函数或变量,当做私有函数,这个函数就只有这个implementation区块内可以访问。
语法:
@implementation 类名
将方法的声明写在这里
@end
用来表示这类事物的共同特征的变量必须要定义在@interface的{}中,定义在{}中用来表示这类事物的共同特征的变量我们叫做属性/成员变量等等。
如何创建一个类的对象呢?
类名 *对象名 = [类名 new];
Ex. Person *p1 = [Person new];
说明根据Person这个类的模版创建了一个对象名字叫做p1。
二、函数方法
方法的声明实现调用
无参数的方法
-
声明
a. 位置:在@interface的{ }外面
b. 语法:- (instanceType)方法名称;(instanceType是返回值类型)
Ex.– (void) eat;表示声明了一个无返回值且无参数的方法,方法名称是eat (void表示没有返回值) -
实现
a. 位置:在@implementation中实现
b. 实现的语法:将方法的声明拷贝到@implementation里面并且去掉;改为{ },把方法实现的代码写在{ }里面。
Ex.– (void) eat{ 方法实现的代码} -
调用
a. 方法无法直接调用,要先创建对象(对象中有类中的属性和方法)
b. 调用对象的方法:[对象名 方法名];
Ex.[p1 eat];
带一个参数的方法
- 声明
a. 位置:在@interface的{ }外面
b. 语法:- (instanceType)方法名称:(参数类型)形参名称;
Ex. –(void)eat: (NSString *)foodName;
定义了一个没有返回值的方法,方法名称叫eat,这个方法有一个参数,类型是NSString *类型的,参数名为foodName。
-
实现
a. 位置:在@implementation中实现
b. 实现的语法:将方法的声明拷贝到@implementation里面并且去掉;改为{ },把方法实现的代码写在{ }里面。 -
调用
a. 语法:[对象名 方法名:实参];
Ex.[p1 eat: @”dishes”];
带多个参数的方法
-
声明
a. 语法:-(instanceType)方法名称:(参数类型)形参名称1 :(参数类型)形参名称2 : (参数类型)形参名称3;(以此类推) -
调用
a.[对象名 方法名: 实参1 :实参2 :实参3](以此类推)
带参数方法声明规范:
如果方法只有一个参数,要求最好这个方法的名字叫做 xxxWith:
Ex. -(void)eatWith: (NSString *)foodName;
如果方法有多个参数,建议用这个方法名称:
xxxWith: (参数类型)参数名称 and: (参数类型)参数名称 and: (参数类型)参数名称;
Ex. –(int)sumWith: (int)num1 and: (int)num2 and: (int)num;
三、思考
如何访问对象属性?
- 在声明属性里加一个
@public - 访问对象属性的方式:
对象名->属性名 = 值;(赋值) 或者对象名->属性名;
注意:整数用%d为占位符,string用%@为占位符
四、总结
本篇文章讲解了OC语言中class如何编写(@interface & @implementation)以及它的函数方法。