文档章节

Minimize Importing Header 学习

Herbert77
 Herbert77
发布于 2015/09/02 12:38
字数 450
阅读 5
收藏 0


  1. 当我们在定义一个类C1的接口时,通常会在声明方法的时候,使用到另外一个类C2作为方法的参数,当时这个类并不知道这个作为参数类的任何信息,于是我们通常会直接把作为参数的类C2的头文件直接导入到正在创建类C1的头文件中。这种做法可以解决眼前的问题,但是这种做法很糟糕。理由有两点:

    为了解决这些存在的问题,一种更佳的实践方案是,在类C1的头文件中使用 @class 命令(@class C2;),在实现文件中导入C2(#import "C2"),在C2文件中的做法与此同理。

    • 当有其他的类C3需要用到C1类的时候,我们如果还是按照这个方法导入C1头文件,那么C2头文件也会被导入,如果还有一个类C4要用到C3,那么其导入的头文件就更多了。所以,这种做法会增加编译时间。

    • 如果有两个类C1和类C2,他们互相引用,就会产生到底是先有鸡还是先有蛋的这种问题(循环引用)。当其中一个类C1进行语法解析的时候,它会导入另外一个类C2,C2这个类又导入了C1。这种导入(#import)会陷入无限循环,最后的结果是,没有一个类能够被正确的编译。

  2. 在声明一个类遵从某项协议时,我们不能使用向前声明,取而代之的做法是,把协议编码在单独的一对文件中,然后在类的声明中导入这对文件(.h /.m)的头文件。

  3.                                                                                                                                                                                                                                                                                                          Jan 24, 2015

© 著作权归作者所有

Herbert77
粉丝 0
博文 13
码字总数 10309
作品 0
武汉
程序员
私信 提问
SOFA Statistics 1.1.7 发布,统计分析报表

SOFA 是一个统计、分析和报表程序,特点是易用、易学以及漂亮的输出效果。SOFA 可直接连接数据库并给出查询结果。 改进记录: This release can make series of clustered bar charts and m...

oschina
2012/07/07
441
0
SAP S/4HANA销售订单创建时,会自动触发生产订单的创建

这个自动触发的过程是怎么实现的?使用下面的代码创建一个销售订单: 用事务码SAT分析,发现总共创建消耗的时间为3.98秒, 其中1.84秒花费在EIGENFERTIGUNG_BEARBEITEN这个subroutine上。 用...

JerryWang_SAP
02/03
4
0
Log4net采用外部配置文件和多记录器的方法

1) 创建配置文件,可以放在任意位置,名字可以任意的xml文件 例如,文件名 Log.Config.xml,内容如下

james chan
07/12
0
0
foobar2000 1.4 Beta 3 发布,轻量的音频播放器

foobar2000是一款Windows 平台下的高级音频播放器,包含了一些播放增益支持、低内存占用等基本特色以及内置支持一些流行的音频格式,支持强大的界面扩展和插件以及出色的音效。foobar2000的定...

局长
2018/01/15
772
4
深度学习自动调参之NNI样例分析

作者 DeamoV 变身的大恶魔 张博涵 在之前的博文中介绍了 NNI 与其他自动机器学习工具的比较,NNI 的安装和使用等内容,这篇文章你将看到: 如何修改 NNI 官方的 mnist-annotation 例子的配置...

DeamoV
02/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
30分钟前
26
0
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
9
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部