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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王庆功 中级黑马   /  2014-9-19 12:14  /  1654 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

假设类是Person类,协议名叫MyProtocol。我们都知道,提前声明有两种方式:
类的提前声明: #import "Person.h"   和@class Person;
协议的提前声明:#import "MyProtocol.h" 和@protocol MyProtocol;

而且在这两种方式中,算是效率比较高的就是@class和@protocol这种吧,老师也说让多用这种。但是在@implementation实现中,如果用到类或协议里的实力变量或方法时还是得用#import那种。大家怎么看的或者有开发经验的大神说说哪些情况下用#import,那些情况下用@class或@protocol这种?谢谢


6 个回复

倒序浏览
一般在.h文件里面我们是不直接#import的,#import相当于把代码copy到这个地方,而@class告诉编译器我这个是一个类,不让他报错,在.m文件中引入头文件,这样可以提高效率
回复 使用道具 举报
你看的视频里的哪一集?我怎么一点印象都没有?
回复 使用道具 举报
雨后暖暖 发表于 2014-9-19 19:45
一般在.h文件里面我们是不直接#import的,#import相当于把代码copy到这个地方,而@class告诉编译器我这个是 ...

你好。我个人觉得你的说法有点欠妥。就是“在.m文件中引入头文件”按照老师的说法,在.m文件中如果用到类里面的变量或方法,也是要#import的。接着就是我的问题了,既然早晚要导入,在.h中直接导入就行了。如果不需要类里面的成员变量或方法,则可以只声明就行了,但是我还体会不到这种用什么用处
回复 使用道具 举报
SailY 发表于 2014-9-19 23:32
你看的视频里的哪一集?我怎么一点印象都没有?

算是自己总结的一点吧。因为我自己敲代码时搞混了,所以稍微注意了下
回复 使用道具 举报
敲得时候都会有点混淆,多敲几遍就好了
回复 使用道具 举报
王庆功 发表于 2014-9-20 09:57
你好。我个人觉得你的说法有点欠妥。就是“在.m文件中引入头文件”按照老师的说法,在.m文件中如果用到类 ...

程序在编译的时候只是检查方法是否声明,所以你只要用class告诉编译器这个是一个类就可以,当程序运行的时候才会去.m文件调用方法,数据量小的时候直接在.h中引入Import是感觉不出来什么不同的,如果你引入的文件很大,就会感觉到的,这个问题和编译有关
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马