//  Person.h

#import <Foundation/Foundation.h>
@class Car; //#import "Car.h"
// 由于import是一个预编译指令, 他会将""中的文件拷贝到import所在的位置。
// 并且import有一个特点, 只要""中的文件发生了变化, 那么import就会重新拷贝一次(更新操作)。
// @class仅仅是告诉编译器, @class后面的名称是一个类, 不会做任何拷贝操作。
// 注意: 由于@class仅仅是告诉编译器后面的名称是一个类, 所以编译器并不知道这个类中有哪些属性和方法, 所以在.m中使用这个类时需要import这个类, 才能使用。 /*
总结:
1.如果都在.h中import, 假如A拷贝了B, B拷贝了C , 如果C被修改了, 那么B和A都需要重新拷贝. 因为C修改了那么B就会重新拷贝, 而B重新拷贝之后相当于B也被修改了, 那么A也需要重新拷贝. 也就是说如果都在.h中拷贝, 只要有间接关系都会重新拷贝。也就是说.h文件不使用的但是也要重新拷贝。
2.如果在.h中用@class, 在.m中用import, 那么如果一个文件发生了变化, 只有和这个文件有直接关系的那个文件才会重新拷贝。因为.m文件没有被别人引入过。
3.所以在.h中用@class可以提升编译效率,但是代码量变大了。 */
@interface Person : NSObject @property(nonatomic, retain)Car *car;
@end
//  Person.m

#import "Person.h"
#import "Car.h" @implementation Person @end
//  Car.h

#import <Foundation/Foundation.h>
//#import "Wheel.h"
@class Wheel; @interface Car : NSObject @property (nonatomic, retain) Wheel *wheel;
@end
//  Car.m

#import "Car.h"
#import "Wheel.h" @implementation Car - (void)dealloc
{
[_wheel release];
[super dealloc];
}
@end
//  Wheel.h

#import <Foundation/Foundation.h>

@interface Wheel : NSObject

@property (nonatomic, assign) int size;
@end
//  Wheel.m

#import "Wheel.h"

@implementation Wheel

@end

oc49--@class的更多相关文章

  1. JS高级学习历程-8

    2 构造函数和普通函数的区别 两者本身没有实质区别,具体看使用 new  函数();   -------->构造函数 函数();        ---------> 普通函数 <!D ...

随机推荐

  1. dropdownlist显示树形结构

    /// <summary> /// 递归 /// </summary> /// <param name="deplist"></param ...

  2. window.showModalDialog的问题

    通过window.showModalDialog的方式弹出B页面,总报“拒绝访问”的错误,将站点添加到受信任站点可以解决这个问题

  3. Mac下CUDA开启及Tensorflow-gpu 1.4 安装

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/8040694.html 在之前的文章中,笔者介绍了在Mac下安装Tensorfl ...

  4. 在ubuntu系统下下载和卸载skype

    1.下载 sudo apt-get install skypeforlinux 2.卸载 sudo apt remove skypeforlinux

  5. 设计模式——“signleton”

    那天别人问了我一个问题,关于单例模式的,由于之前了解的都是蜻蜓点水,所以重新复习了一次重新总结. 单例模式的写法总的来说有5种:懒汉,恶汉,枚举,双重校验锁,静态内部类 懒汉 public class ...

  6. SQL基本操作——存储过程

    存储过程类似于C#中的方法. --创建存储过程 create proc usp_TwoNumberAdd @num1 int, @num2 int as begin select @num1+@num ...

  7. utf-8与unicode是什么关系

    简单来说: Unicode  is a charset. ------Unicode 他就是一个字符集 UTF-8 is encoding style. --------UTF-8他就是一种编码方式, ...

  8. 如何在Android Studio中查看一个类的继承关系呢?

    在面板顶部的工具栏中,找到Navigate,然后在下拉列表中,找到“Type Hierarchy”(快捷键 Ctrl+H),点击.即可在面板右侧出现该类的Hierarchy层级图.

  9. Luogu P2970 [USACO09DEC]自私的放牧

    https://www.luogu.org/problemnew/show/P2970 P2970 [USACO09DEC]自私的放牧 题目描述 Each of Farmer John's N (1 ...

  10. 使用Python的Flask框架,结合Highchart,动态渲染图表(Ajax 请求数据接口)

    参考链接:https://www.highcharts.com.cn/docs/ajax 参考链接中的示例代码是使用php写的,这里改用python写. 需要注意的地方: 1.接口返回的数据格式,这个 ...