zoukankan      html  css  js  c++  java
  • objc 源文件拆分

    在程序越来越大或是大型的工程项目中如果把代码都塞进main文件中,搜寻代码修改等将会非常麻烦,所以可以将其中的类,函数等拆分到其他文件中

    一般将类的接口,定义的全局变量,struct,define等都放在.h头文件,将实现放在.m文件中

    其中需要注意的是#import,#include,@class区别:

    1.#import和#include

    区别在于#import不会引起交叉编译,他不会重复导入文件

    因此尽量使用#import;

    2.#import 和 @class

    设像如果巨量文件import导入同一个头文件,或者传递导入头文件a->b->c...当基础头文件改变时,其余都要重新编译(一种依赖关系),会影响程序的效率,使用@class会避免出现此种情况。

    原理:程序不加头文件无法工作是他不理解出现的陌生定义,情况A:他需要知道相应类的实例变量,超类等。情况B:他只需知道类名就行。

    情况B:可用@class来替代#import,他告诉编译器别去深究这个类具体信息,这只是一个类名。或许不确切,可以理解为当成了一种数据类型(如类c由类A,B复合而成,则在其.h中可以不用#import导入A,B的头文件));

    情况A:当类C继承自其他超类,而不是指针指向其他类,必须导入B.h.,当.m实现中用到了包含进来其他类的方法时,无法使用#import。

    (为什么@class减少编译次数?不是每个类都有implementation中还是要用#import吗?理清self?为什么继承自超类就必须import难道复合而成的类就不许知道a,b的组成吗?)

  • 相关阅读:
    实体类、边界类和控制类
    面向对象分析和面向对象设计的区别
    面向对象分析与设计的步骤
    用例图:从用户角度描述系统功能,并指各功能的操作者
    面向对象分析和设计(OOA/D)
    在UML系统开发中有三个主要的模型
    UML建模之活动图介绍(Activity Diagram)
    活动图本质上就是流程图
    流程图
    流程、业务与事务
  • 原文地址:https://www.cnblogs.com/Ponytai1/p/6045112.html
Copyright © 2011-2022 走看看