OC 语言简介|青训营笔记

397 阅读3分钟

这是我参与「第四届青训营-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

 

二、函数方法

9507677b586443358a5e60f0ddeee5c7~tplv-k3u1fbpfcp-zoom-in-crop-mark-3024-0-0-0.awebp.webp 引用:juejin.cn/post/712271…

方法的声明实现调用

 

无参数的方法
  1. 声明
    a. 位置:在@interface{ }外面
    b. 语法:- (instanceType)方法名称;instanceType是返回值类型)
    Ex. – (void) eat; 表示声明了一个无返回值且无参数的方法,方法名称是eat       (void表示没有返回值)

  2. 实现
    a. 位置:在@implementation中实现
    b. 实现的语法:将方法的声明拷贝到@implementation里面并且去掉;改为{ },把方法实现的代码写在{ }里面。
    Ex. – (void) eat{ 方法实现的代码}

  3. 调用
    a. 方法无法直接调用,要先创建对象(对象中有类中的属性和方法)
    b. 调用对象的方法:[对象名 方法名];
    Ex. [p1 eat];

 

带一个参数的方法
  1. 声明
    a. 位置:在@interface{ }外面
    b. 语法:- (instanceType)方法名称:(参数类型)形参名称;

Ex. –(void)eat: (NSString *)foodName; 定义了一个没有返回值的方法,方法名称叫eat,这个方法有一个参数,类型是NSString *类型的,参数名为foodName

  1. 实现
    a. 位置:在@implementation中实现
    b. 实现的语法:将方法的声明拷贝到@implementation里面并且去掉;改为{ },把方法实现的代码写在{ }里面。

  2. 调用
    a. 语法:[对象名 方法名:实参];
    Ex. [p1 eat: @”dishes”];

 

带多个参数的方法
  1. 声明
    a. 语法:-(instanceType)方法名称:(参数类型)形参名称1 :(参数类型)形参名称2 : (参数类型)形参名称3;   (以此类推)

  2. 调用
    a. [对象名 方法名: 实参1 :实参2 :实参3]     (以此类推)

带参数方法声明规范:

如果方法只有一个参数,要求最好这个方法的名字叫做 xxxWith:

Ex. -(void)eatWith: (NSString *)foodName;

如果方法有多个参数,建议用这个方法名称:

xxxWith: (参数类型)参数名称 and: (参数类型)参数名称 and: (参数类型)参数名称;

Ex. –(int)sumWith: (int)num1 and: (int)num2 and: (int)num;

三、思考

如何访问对象属性?

  1. 在声明属性里加一个@public
  2. 访问对象属性的方式:对象名->属性名 = 值;(赋值)  或者对象名->属性名;

注意:整数用%d为占位符,string用%@为占位符

四、总结

本篇文章讲解了OC语言中class如何编写(@interface & @implementation)以及它的函数方法。