OC语言3-方法和文件编译

转载 2016年05月31日 11:04:06

一、OC方法

(一)对象方法

  1. 对象方法以-开头如 -(void)xx;

  2. 对象方法只能又对象来调用

  3. 对象方法中可以访问当前对象的成员变量

  4. 调用格式 [对象名 对象方法名];

  5. 设计一个学生类和狗类,练习对象方法的使用。

学生类的声明:

image

学生类的实现:
image

狗类的声明:

image

狗类的实现:

image

主程序:

image

(二)类方法

  1. 类方法以+开头 如+(void)put;

  2. 类方法只能由类来调用

  3. 类方法中不能访问实例(成员)变量,因为类方法又类来调用,并没有创建存储空间来存储类中的成员变量。

  4. 调用格式:[类名 类方法名];

  5. 类方法的好处和适用场合:

    • 不依赖于对象,执行效率更高;

    • 能用类方法解决的问题,尽量使用类方法;

    • 场合:当方法内部不需要使用到成员变量时,可以改为类方法。

  6. 设计一个计算器类,练习使用类方法。

计算器类的声明:

image

计算器类的实现:

image

主程序:直接使用类名调用类方法
image

注意1:可以允许类方法和对象方法同名。

注意2:在对象方法中可以调用类方法。

(三)方法名

(1)不带参数的方法

声明:

image

调用:
image

(2)带参数的方法

声明:
image

调用:

image

注意:冒号也是方法名的一部分。

二、文件编译

在工作中,通常把不同的类放到不同的文件中,每个类的声明和实现分开,声明写在.h头文件中,实现写在相应的.m文件中去,类名是什么,文件名的前缀就是什么。

假设有两个类,分别是Person类和Dog类,则通常有下面五个文件:

  1. Person.h Person类的声明文件

  2. Person.m Person类的实现文件

  3. Dog.h Dog类的声明文件

  4. Dog.m Dog类的实现文件

  5. Main.m 主函数(程序入口)

在主函数以及类的实现文件中要使用#import包含相应的头文件。

补充:import有两个作用:

一是和include一样,完完全全的拷贝文件的内容;

二是可以自动防止文件内容的重复拷贝(即使文件被多次包含,也只拷贝一份)。

在使用命令行进行编译链接文件的时候,通常是把.m文件单文件编译,然后再把所有的目标文件链接,但是在Xcode中,是把所有的.m文件都进行编译链接的,如果出现重复定义的错误,那大部分问题根源应该就是文件内容被重复包含或者是包含.m文件所引起的。

源文件中不论是使用include还是import,都不能包含.m或者是.c文件,只能放声明。因此,在OC中通常把类拆分开来,拆分成声明和实现两个部分。

提示:这也是编程思想的一种体现,可以说.h和.m文件时完全独立的,只是为了要求有较好的可读性,才要求两个文件的文件名一致,这也是把接口和实现分离,让调用者不必去关心具体的实现细节

Xcode是写一行编译一行,有简单的修复功能,红色是错误提示,黄色警告。如果在程序中声明了一个变量,但是这个变量没有被使用也会产生警告信息。

在调试程序的时候,如果发现整个页面都没有报错,但是一运行就错误,那么一定是链接报错。

Swift和OC,是编译型语言、解释性语言、运行时语言?

首先需要明确的一点是,什么是编译型语言和解释性语言 编译型语言,就是在其执行过程中需要先将其经过编译成机器码来给计算机识别的,其执行效率就会比较高这个是显而易见的,常见比如:C、C++ 而解释型语...
  • a12041543
  • a12041543
  • 2016年06月14日 17:42
  • 1651

OC方法和文件编译

OC方法和文件编译 一、OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变...
  • u010927311
  • u010927311
  • 2014年10月03日 22:15
  • 356

oc c 多文件编译

今天来给大家介绍一下 多文件编译 我们应该知道c 是面向过程语言 OC 是面向对(OOP)语言 但是OC语言是完全兼容C语言的 今天给大家演示个小例子来测试一下,与大家共同分享 首先介绍一下运行过...
  • u012701023
  • u012701023
  • 2015年07月22日 14:25
  • 428

OC与C++的互相调用

新建一个iOS工程 在viewcontroller.m中输出, printf(“hello world”); 运行后,控制台会输出hello world printf是c语言的语法,所以我...
  • qq_37240033
  • qq_37240033
  • 2017年02月10日 09:46
  • 1204

swift 和 OC 混合编译的问题

最近在学习swift,很想在之前OC的项目中使用swift 开始的时候,上手还算比较快,下面记录下简单的一些坑。 1.由于接触的swfit一些教程,所以准备在已有的OC里面使用swift,按照教程...
  • crazycharming
  • crazycharming
  • 2015年06月13日 01:54
  • 1821

OC中方法与函数的区别

方法:方法是Objective-C独有的一种结构,只能在Objective-C中声明、定义和使用,C语言不能声明、定义和使用。 1、类方法以+号开头,对象方法以-号开头 + (void) in...
  • weilaizhuan
  • weilaizhuan
  • 2015年02月28日 12:34
  • 2363

黑马程序员 OC中的四种遍历方法

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! -----------------------...
  • MeditatingPig
  • MeditatingPig
  • 2014年07月23日 09:38
  • 761

Swift基础之Swift调用OC语言文件使用步骤

Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤:创建一个Swift项目Demo,然后新建一个OC语言的文件如图:创建一个B...
  • hbblzjy
  • hbblzjy
  • 2016年08月19日 17:27
  • 1047

oc中的类的声明和实现

一.关于类的几个名词 类 .h 类的声明文件,用于声明成员变量和方法。类的声明使用关键字@interface和@end。 注意:.h中的方法只是做一个声明,并不对方法进行实现。 .m文件  类...
  • sinat_20697509
  • sinat_20697509
  • 2016年02月17日 20:59
  • 672

IOS之OC方法和文件编译

一、OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变量 (4)调用格式   ...
  • LCF_3_6
  • LCF_3_6
  • 2017年04月16日 17:35
  • 101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC语言3-方法和文件编译
举报原因:
原因补充:

(最多只允许输入30个字)