objective-c中@class和#import
objective-c中@class和#import
#import "B.h"
@interface A :NSObject
{
B *b;
}
@end
@class
通常引入一个类有两种方法。一种是#import方式引入,一种是通过@class引入
两种方式的差别
1 #import方式会包括被引用类的全部信息。包括被引用类的的变量和方法:@class方式仅仅是告诉编译器在A.h文件里B *b仅仅是类的声明。详细这个类有什么信息这里不须要知道,等文件里真正须要用到时。才会真正去查看B类中的信息。
2 使用@class方法因为仅仅须要知道被引用类(B类)的名称就能够了,而在实现类因为要用到被引用类中的实体变量和方法,所以在.m文件里须要使用@import来引用被引用的头文件。
3 假设有上百个头文件都#import
了同一个文件,或者这些文件一次呗#import,那么一旦最開始的头文件稍有修改,后面引用到这个文件的全部类都须要又一次编译一遍,这样效率会非常低。相对来讲,使用@class方式就不会出现这样的问题。
#import "A.h"
@interface B : NSObject
{
A *a;
}
@end
4 对于循环依赖关系来说。比喻说A类引用B类,同一时候B类也引用A类,当程序执行时,编译会报错。当使用@class在两个类相互声明,就不会出现编译报错。由上可知,@class是放在。
h中的,仅仅是在引用一个类,假设须要引用到被引用类的实体变量或者方法是。还须要使用#import方式引入被引用类。
objective-c中@class和#import的更多相关文章
- objective C中的字符串NSStirng常用操作
objective C中的字符串操作 在OC中创建字符串时,一般不使用C的方法,因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,在Cocoa中NSString集成的一些方法,可以很方便的 ...
- Intellij Idea 工具在java文件中如何避免 import .*包
Intellij Idea工具在java文件中怎么避免import java.utils.*这样的导入方式,不推崇导入*这样的做法!Editor->Code Style->Java-> ...
- 理解Objective C 中id
什么是id,与void *的区别 id在Objective C中是一个类型,一个complier所认可的Objective C类型,跟void *是不一样的,比如一个 id userName, 和vo ...
- 浅谈Objective—C中的面向对象特性
Objective-C世界中的面向对象程序设计 面向对象称程序设计可能是现在最常用的程序设计模式.如何开发实际的程序是存在两个派系的-- 面向对象语言--在过去的几十年中,很多的面向对象语言被发明出来 ...
- JS ES6中export和import详解
1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出, // profile.js export var firstName = ' ...
- JavaScript ES6中export、import与export default的用法和区别
前言 相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在看他们之间的区别之前,我们先来看看它们的用法. ES6 import和export的用法 ...
- python中:from * import 与 import 详解
在python 中导入模块是我们最常用的功能,基本每个.py 文件中都会有 import 或者是 from * import 语句,可是,这两种方法有什么不同,有该怎么用?今天就好好分析一下. 先上定 ...
- vue2 中的 export import
vue中组件的引用嵌套通过export import语法链接 Nodejs中的 export import P1.js export default { name: 'P1' } index.js i ...
- Objective C中的ARC的修饰符的使用---- 学习笔记九
#import <Foundation/Foundation.h> @interface Test : NSObject /** * 默认的就是__strong,这里只是做示范,实际使用时 ...
随机推荐
- 【LeetCode】-- 260. Single Number III
问题描述: https://leetcode.com/problems/single-number-iii/ 在一个数组里面,只有两个元素仅出现过1次,其余都出现过两次.找出出现仅一次的那两个(a, ...
- UE4 集成讯飞听写插件
搞了几天,有些坑记录一下. 3个方面的知识需要学习 1.制作UE4插件 2.引入第三方库 3.讯飞听写的api 一看是参考 https://blog.csdn.net/u012793104/artic ...
- S2深入.NET编程总结
不知从几何时,我也开始变得懒了,以往为了学习的那股子斗劲也早已不在,是时候反思反思了.失败的检测成绩希望可以把我唤醒. 经过总结,在本书中大概学到了这些知识: 1.如果一个类可序列化,则它的子类和包含 ...
- java学习笔记_BeatBox(GUI部分)
import java.awt.*; import javax.swing.*; public class BeatBox { JFrame theFrame; JPanel mainPanel; S ...
- python--9、进程及并发知识
进程 一个文件的正在执行.运行过程就成为一个进程.执行多个程序,把程序文件都加载到内存,并且多个程序的内存空间隔离--空间上的复用. 遇到IO等待,切CPU到别的程序,提升效率.没有IO,一个程序占用 ...
- Python3 每次处理一个字符
""" Python3.4[文本]之每次处理一个字符 """ test_str = "my name is bixiaopeng& ...
- SQL基本操作——select into与临时表
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中,常用于创建表的备份复件或者用于对记录进行存档. --制作 "Persons" 表的备份复件: SELECT ...
- http通信流程
Host https://www.charlesproxy.com Path / Notes SSL Proxying not enabled for this host. Enable in the ...
- Requests库 更新中
1.获取网页内容 --- requests库 <需理解HTTP协议> >requests库的7个主要方法 方法 说明 requests.requests() 构造一个请求,支撑一 ...
- vue移动端地址三级联动组件(一)
vue移动端地区三级联动 省,市,县.用的vue+mintUi 因为多级联动以及地区的规则比较多.正好有时间自己写了一个.有问题以及建议欢迎指出.涉及到dom移动,所以依赖vue+jquery.这边数 ...