A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田中 初级黑马   /  2015-8-20 22:18  /  967 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#import <Foundation/Foundation.h>
#import <stdio.h>
#include<stdio.h>
#include <Foundation/Foundation.h>
上面4种头文件系统都能运行。他们的有什么区别呢?求指点....

点评

楼中正解  发表于 2015-8-21 10:41

15 个回复

正序浏览
学习学习!
回复 使用道具 举报
领悟了啊。。。
回复 使用道具 举报
                       受教了
回复 使用道具 举报
(1)#import指令是Object-C针对#include的改进版本,#import确保引用的文件只会被引用一次,这样就不会陷入递归包含的问题中。
  (2)#import与@class二者的区别在于:
  #import会链入该头文件的全部信息,包括实体变量和方法等;而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑。在头文件中, 一般只需要知道被引用的类的名称就可以了。
  不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
回复 使用道具 举报
tr2e 中级黑马 2015-8-21 11:47:58
11#
                    学习了
回复 使用道具 举报
2L 正解...
回复 使用道具 举报
#import可以重复包含,而#include不可以
回复 使用道具 举报
#import可以重复包含,而#include不可以
回复 使用道具 举报
我来逛逛我来逛逛
回复 使用道具 举报
学习了
回复 使用道具 举报
同意楼上。
#import比起#include的好处就是不会引起交叉编译。
在 Objective-C中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。
回复 使用道具 举报
楼上正解~~
回复 使用道具 举报
#import可以防止文件重复包含,#include需要#ifndef XXXXX      #define XXXXX      #endif才能防止文件重复包含。
回复 使用道具 举报
我只知道一点,include和import都能防止重复包含。请问还有别的特点吗?或者区别吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马