一、 Objective-C 中 #import 和 #include 的区别
预编译指令
Objective-C:#import
C,C++:#include
#import由gcc编译器支持
在 Objective-C 中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。
使用哪一个还是由你来决定。一般来说,在导入 Objective-C 头文件的时候使用 #import,包含 C 头文件时使用 #include。比如:
#import <foundation /Foundation.h>
#include <asl .h>
#include <mach /mach.h>
#import比起#include的好处就是不会引起交叉编译
二、@class是用来做类引用的
@class就是告诉编译器有这么一个类,至于类的定义是啥不知道
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import
举个例子说明:
在ClassA.h中
#import ClassB.h 相当于#include整个.h头文件。如果有很多.m文件#import ClassA.h,那么编译的时候这些文件也会#import ClassB.h增加了没必要的#import,浪费编译时间。在大型软件中,减少.h文件中的include是非常重要的。
如果
只是@class ClassB 那就没有include ClassB.h。仅需要在需要用到ClassB的ClassA.m文件中 #import ClassB.h
那么什么时候可以用@class呢?
如果ClassA.h中仅需要声明一个ClassB的指针,那么就可以在ClassA.h中声明
@ClassB
...
ClassB *pointer;
分享到:
相关推荐
c++万能头文件此头文件包含了: #include #include #include #include #include #include #include #include #include <ios> #include #include #include #include #include #include #include #...
C语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言头文件 IOSC语言...
#include <string.h> /*字符串函数及存储器函数头文件*/ #include <stdio.h> /*标准I/O头文件*/ #include <absacc.h> /*存储器绝对地址访问定义?与指令MOVX相关*/ #include <intrins.h> /*内部函数定义?与循环...
包含所有的AVR头文件,如: #include #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/wdt.h>
// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__C4B5DA9B_21...
#include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入/输出 #include <iomanip.h> //参数化...
C/C++头文件一览 C、传统 C++ #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <...
DSP中CSL头文件中宏中#和##的用法介绍,大家可以参考一下。
调用标准输入输出头文件 */ #include <stdlib.h> /* 调用标准库函数,工具函数 */ #include <graphics.h> /* 调用图形库 */ int main() /* 整数型主函数 */ { int GraphDriver; /* 定义 GraphDriver 为一...
1. import会包含这个类的所有信息,包括实体变量和方法(.h文件中),而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,后面会再告诉你。 2. 在头文件中, 一般只需要知道被引用的类的...
C语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 ...
经常在CSDN以及其他之类的技术论坛上问关于C++ 头文件的问题。提出这些问题的往往就是那些刚学C++的新手。当初我是菜鸟的时候也问过类似的问题。 现在来看看下面两个include: #include<iostream> // 这个...
#include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入/输出 #include <iomanip.h> //参数化...
* include/linux/schedh * */ #ifndef _LINUX_SCHED_H #define _LINUX_SCHED_H #include <asm/param.h> /* for HZ */ extern unsigned long event; #include <linux/config.h> #include <linux/binfmts.h> #...
1. import会包含这个类的所有信息,包括实体变量和方法(.h文件中),而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,后面会再告诉你。 2. 在头文件中, 一般只需要知道被引用的类...
头文件加#ifndef #define #endif
/* ADC12CTL0 内16位控制寄存器位*/ #define ADC12SC 0x001 /*采样/转换控制位*/ #define ENC 0x002 /* 转换允许位*/ #define ADC12TOVIE 0x004 /*转换时间溢出中断允许位*/ #define ADC12OVIE 0x008 /*溢出...
#include "rpc.h" #include "rpcndr.h" #ifndef __RPCNDR_H_VERSION__ #error this stub requires an updated version of #endif // __RPCNDR_H_VERSION__ #ifndef COM_NO_WINDOWS_H #include "windows.h" #...
单片机c头文件at89X51/AT89X52,这个一直是困惑刚学c语言编单片机程序的朋友们,现在我无私的奉献出来了
#pragma once //防止头文件被二次引用 #include<stdio.h> /*perror, printf*/ #include<assert.h> /*assert*/ #include<stdlib.h> /*realloc*/ typedef int SLDataType; //后续要存储其它类型时方便更改 //顺序表...