博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oc49--@class
阅读量:5930 次
发布时间:2019-06-19

本文共 1146 字,大约阅读时间需要 3 分钟。

//  Person.h#import 
@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 
//#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 
@interface Wheel : NSObject@property (nonatomic, assign) int size;@end
//  Wheel.m#import "Wheel.h"@implementation Wheel@end

 

转载地址:http://woktx.baihongyu.com/

你可能感兴趣的文章
代数几何:点,线,抛物线,圆,球,弧度和角度
查看>>
《Java程序性能优化》学习笔记 JVM调优
查看>>
J2EE 全面简介
查看>>
Silverlight实用窍门系列:46.深入了解Silverlight的IValueConverter和TypeConverter
查看>>
深入浅出Mesos(四):Mesos的资源分配
查看>>
Backbone中的模型
查看>>
为神马精确Sprite的碰撞形状不通过简单的放大Sprite的尺寸来解决?
查看>>
Android Studio(三):设置Android Studio编码
查看>>
JVM 内部运行线程介绍
查看>>
51单片机之闹钟制作
查看>>
MongoDB管理:如何重命名数据库
查看>>
extended the postgresql metric python module on ganglia
查看>>
Redis 数据存储位置 导出数据
查看>>
APK反编译之一:smail代码的基础
查看>>
JAVA文件压缩、解压
查看>>
plan migrate my blog to github https://github.com/digoal/blog
查看>>
浅尝批处理系统
查看>>
京东大数据工程师教你怎样用Sqoop
查看>>
Swift 之 Codable
查看>>
AndroidStudio编译时报错Error:Please select Android SDK
查看>>