2013.1.11
来源:互联网 发布:电梯三菱plc编程实例 编辑:程序博客网 时间:2024/05/16 11:14
#import和@class的区别:
在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明,我们可能也见
到在.h文件进用@class来声明的,那么#import和@class进行声明 到底有什么的区别呢?
1.#import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编译器,声明的类
的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你,所以在头文件中如果用
@class声明某个类后,在.m的实现中如果用到声明类的具体方法或变量时还得再#import类
2.在.h头文件中进行声明时用#import的话,如果100个头文件都#import同一个头件,或者这些
文件是依次引用的,如A->B,B->C,C->D,当最开始的那个头文件有变化后进行编译时,后面所有
引用它的类都需要重新编译,如果引用最开始的头文件的类很多的话,那么这将耗费大量的时间
,而用@class则不会,可能有人会想即然.h只是用@class只是简单的一个声明告编译器有这个类
不让其报错,那么.m中要用到引入的类的方法和属性时,不还是要#import头文件一次,是的这个
是对的,但编译器编译的时候只编译头文件的,所以你的.m中用#import与编译时间没太大关系
3.接下来说说什么时候该用@class,什么时候该用#import进行声明,
(1)一般如果有继承关系的用#import,如B是A的子类那么在B中声明A时用#import
(2) 另外就是如果有循环依赖关系,如:A->B,B->A这样相互依赖时,如果在两个文件的头文
件中用#import分别声明对方,那么就会出现头文件循环利用的错误,这时在头文件中用@class
声明就不会出错
(3)还有就是自定义代理的时候,如果在头文件中想声明代理的话如@interface
SecondViewController:UIViewController时应用#import不然的话会出错误,注意XXXX
Delegate是自定义的
Q:什么是同事类?是兄弟类的别名?
#import相比#include,前者可以避免头文件被重复引用,而后者不能。#import<>相比
#import"",前者包含头文件一般是系统或编译环境提供的头文件(库函数、框架、编译器提供的
类)。后者一般是自定义文件,先在本地文件(或本工程项目)中寻找该头文件,如果未找到再
在系统中查找该文件。
printf()与NSLog()的区别:
后者较前者添加了一些特性:时间戳、日期戳、自动附加换行符('\n')等。
两者的输入类型也是有区别的NSLog期待NSString*,而printf期待const char *。
NSLog支撑%@去打印一个对象类型,当应用%@时,它会给对象发送消息description
,所以若是你组合了一个新的类,你可以经由过程给本身重载description来实现打印DEBUG
- 2013.1.4-2013.1.11
- 2013.1.11
- 2013.1.1
- 2013.1.3
- 2013.1.5
- 2013.1.9
- 2013.1.10
- 2013.1.12
- 2013.1.23
- 2013.1.5
- 2013.11.14-2013.1.18
- 规划(2013.1。10)
- DevExpress 2013.1正式发布
- 2013.1月份工作日记
- 【2013.1.10】设计模式C++ 实现
- 2013.1.14当当网笔试归来
- 黑马程序员 – 开始报名! -- 2013.1.16
- XCode4.2学习日志 2013.1.22
- 强大的wine,新手的天堂啊
- 优秀程序员值得借鉴的一些信息
- linux双网卡配置
- 聊聊并发(一)——深入分析Volatile的实现原理
- 游戏启动脚本
- 2013.1.11
- 修改 Ubuntu ulimit 限制
- Java深度历险(一)——Java字节代码的操纵
- 人生三个陷阱…看完后你会明白
- 聊聊并发(二)——Java SE1.6中的Synchronized
- Fedora 15 Gnome 3 配置与gnome-shell扩展介绍
- 人人网,获取好友Json代码的正则表达式
- 使用HttpWebRequest 首先要获得浏览器的Cookie
- 复习创建java对象常见的一种的底层步骤