黑马程序员技术交流社区

标题: 协议或类的提前声明 [打印本页]

作者: 王庆功    时间: 2014-9-19 12:14
标题: 协议或类的提前声明
假设类是Person类,协议名叫MyProtocol。我们都知道,提前声明有两种方式:
类的提前声明: #import "Person.h"   和@class Person;
协议的提前声明:#import "MyProtocol.h" 和@protocol MyProtocol;

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



作者: 雨后暖暖    时间: 2014-9-19 19:45
一般在.h文件里面我们是不直接#import的,#import相当于把代码copy到这个地方,而@class告诉编译器我这个是一个类,不让他报错,在.m文件中引入头文件,这样可以提高效率
作者: SailY    时间: 2014-9-19 23:32
你看的视频里的哪一集?我怎么一点印象都没有?
作者: 王庆功    时间: 2014-9-20 09:57
雨后暖暖 发表于 2014-9-19 19:45
一般在.h文件里面我们是不直接#import的,#import相当于把代码copy到这个地方,而@class告诉编译器我这个是 ...

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2