#import、#include、@class、@protocol、@interface

#include

它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件。(注意重复引用)

#import

是Objective-C针对#include的改进版本,确保引用的文件只会被引用一次,不会陷入递归包含的问题中。

#import会链入该头文件的全部信息,包括实体变量和方法等。

#import<>用来包含系统自带的文件

#import""用来包含自定义的文件

@class

只是告诉编译器,其后面声明的名称是类的名称,不需要知道其内部的实体变量和方法。一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来。

@protocol

Objective-C中的协议,本身不实现任何方法,只是声明方法,使用协议的类必须实现协议方法

关于delegate  protocol 网上有一个例子讲的非常形象:

我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户

(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(delegate)帮我做这些事,于是我定了一个招聘要求(Protocol),里写明我的助手需要会做(3)(4)(5)这三件事。很快,我招到一个助手。

即:我.delegate = 助手;

@interface

Objective-C中的接口,就是类的一个声明。

Objective-C中的类必须要有接口,但不一定都要有协议。

时间: 2024-08-12 17:02:45

#import、#include、@class、@protocol、@interface的相关文章

#import、#include、#import&lt;&gt;和#import””的区别

#import.#include.#import<>和#import””的区别 一.#import与#include #import不会引起交叉编译的问题.因为在Objective-C中会存在C/C++和Object-C混编的问题,如果用#include引入头文件,会导致交叉编译. 二.#import<>与#import"" 在实际运用中都是某个框架里的.#import <Three20/Three20.h><>通常指向的是一个目录#im

IOS开发之----#import、#include和@class的区别

1. 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include. 2. #import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题.<标记> 所以,#import比起#include的好处就是不会引起交叉编译. #import && #class: 1. import会包含这个类的所有信息,包括实体变量和方法(.h文件中),而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,后面会再告

黑 马 程 序 员_视频学习总结&lt;Objective-C&gt;----04 内存管理、protocol、block、ARC

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.内存管理 1.为什么要用内存管理: 移动设备的内存极其有限,每个app所能占用的内存是有限制的.当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用的对象.变量等 2.管理范围: 任何继承了NSObject的对象,对其他基本数据类型(int.char.float.double.stru

【Servlet】Servlet之forward、sendRedirect、 include区别与使用

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka servlet中的请求转发主要有三种方式:1. forward:是指转发,将当前request和response对象保存,交给指定的url处理.并没有表示页面的跳转,所以地址栏的地址不会发生改变.2. redirect:是指重定向,包含两次浏览器请求,浏览器根据url请求一个新的页面,所有的业务处理都转到下一个页面,地址栏的地址会变发生改变.3. include:意为包含,即包含url中的内

python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] ? 正则表达式: 一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数: 可选的要传递给视图函数的默认参数(字典形式) 别名: 一个可选的name参数 12.361 路由正则表达式 from django.conf.urls imp

从头开始写项目Makefile(六):参数传递、条件判断、include

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 在多个Makefile嵌套调用时,有时我们需要传递一些参数给下一层Makefile.比如我们在顶层Makefile里面定义的打开调试信息变量DEBUG_SYMBOLS,我们希望在进入子目录执行子Makefile时该变量仍然有效,这是需要将该变量传递给子Makefile,那怎么传递呢?这里有两种方法: 1.     在上层Makefile中使用"export&qu

category、protocol、delegate总结

一.category(类别) 类别是一种类扩展的机制,能为现有的类添加新方法. ①类别的基本语法 @interface部分,如: @interface NSString (NumberConvenience) - (NSNumber *) lengthAsNumber; @end 我们为NSString类添加了名为NumberConvenience的类别. 注: 类别只可以添加方法,不可以添加实例变量 类别可以添加属性,但属性必须是@dynamic类型的  @implementation部分 @

【Xcode学C-3】if等流程控制、函数的介绍说明标记分组、#include以及LLVM

一.流程控制:if.while和for循环 (1)if括号中面常常遇到推断是否相等的情况,并且新手常常会把==写成=.所以建议的习惯是把常量放在前面.如a==10.写成10==a,这样就不易犯错. (2)利用for进行递归,但不建议递归太深. (3)详细而言,for循环使用最广泛.for嵌套也非常重要. 二.函数介绍 (1)函数的基本格式 (2)函数的声明和定义的差别,声明一般写在前面.定义写在后面.声明能够同名反复. (3)函数的说明标记分组可用pragma #pragma mark - 这种

Android布局优化之ViewStub、include、merge使用与源码分析

版权声明:本文为Mr.Simple原创文章,未经允许不得转载. 目录(?)[+] 在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性.复杂度也会随之增长.Android官方给了几个优化的方法,但是网络上的资料基本上都是对官方资料的翻译,这些资料都特别的简单,经常会出现问题而不知其所以然.这篇文章就是对这些问题的更详细的说明,也欢迎大家多留言交流. 一.include 首先用得最多的应该是include,按照官方的意思,include就是为了解决重复定义相同布局的问题.例如你有五

深入浅出“跨视图粒度计算”--2、INCLUDE表达式

本文由  网易云发布. 上一篇,讲了什么是数据的粒度,以及网易有数中,哪些地方能够改变视图上的数据粒度. 现在正式开始跨视图粒度计算表达式的讲解,我们首先来看一下INCLUDE表达式 { INCLUDE [维度] : 聚合表达式 } 我们用以下的示例数据来举个例子.这份数据显示了在2014年的1月和2月间,有A.B和C三个客户有一些花费记录. 首先,我在网易有数中展示这两个月的花费总额,将"Date"字段放置在X轴,并且按照"月"的粒度."Spend&qu