基本语法 protocols Category extension
转:http://blog.csdn.net/wangeen/article/details/16989529
protocol 本质就是一系列的method的声明,他并不像class是必须的选项,根据自己的设计模式来选择性的使用。
protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能。Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充
Objective-C单继承的缺陷,协议并不是一个真正的类,在协议的里面只声明方法不实现,并且在协议当中不能声明实例变量,如果一个类实现了某一个协议的方法,那么称折各类遵
循(遵守,采用)了这个协议,正式的协议在类中必须被实现,一个类可以实现多个协议,一个协议也可以被多个类实现,
Category
http://www.cnblogs.com/chijianqiang/archive/2012/06/22/objc-category-protocol.html
SomeClass.h
@interface SomeClass : NSObject{
}
-(void) print;
@end
#import "SomeClass.h" @interface SomeClass (Hello)
-(void)hello;
@end
#import "SomeClass+Hello.h"
@implementationSomeClass (Hello)
-(void)hello{
NSLog (@"name:%@ ", @"Jacky");
}
@end
#import "SomeClass+Hello.h" SomeClass * sc =[[SomeClass alloc] init];
[sc hello]

@protocol ProcessDataDelegate <NSObject>
@required
- (void) processSuccessful: (BOOL)success; @optional
- (id) submitOrder: (NSNumber *) orderid;
@end

@interface TestAppDelegate : NSObject<ProcessDataDelegate>; @end

@implementation TestAppDelegate
- (void) processSuccessful: (BOOL)success{
if (success) {
NSLog(@"成功");
}else {
NSLog(@"失败");
}
}
@end

@protocol A
-(void)methodA;
@end
@protocol B <A>
-(void)methodB;
@end
如果你要实现B,那么methodA和methodB都需要实现。
[obj conformsToProtocol:@protocol(ProcessDataDelegate)]
extension可以 理解成匿名的category,同样需要括号。
下面就是隐藏私有实现的一个例子,也是extension一个常用的方式。
@interface MyClass : NSObject
@property (retain, readonly) float value;
@end
// Private extension, typically hidden in the main implementation file.
@interface MyClass ()
@property (retain, readwrite) float value;
@end extension 常常被用来限定属性的访问权限。比如一个属性提供对外可读,但是对内要可读可写。就用extension实现。
基本语法 protocols Category extension的更多相关文章
- Objective-C语法之扩展(Extension)的使用
Objective-C 2.0增加了Class Extension用于解决两个问题: 可声明私有可读写的属性,而在类的声明中是同名的公开只读属性,从而来支持公开只读.私有可读写的属性 可声明私有方法: ...
- OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法
一. 分类-Category 1. 基本用途:Category 分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...
- category,extension区别
extension是在编译的时候就决定了的,跟普通的头文件是一样的,所以可以添加属性.实例变量.方法.并且添加extension的前提是你有这个类的源代码. category是在程序运行的时候才决定的 ...
- category extension
1 category 分类,只能添加方法,添加的方法成为原来类的一部分,达到扩展类的目的,可以被子类继承 主要给没有源代码的类 添加方法,团队合作项目互不影响,不该动原有类的基础上添加方法 self ...
- OC语法9——Category类别
Category(分类): 当我们在开发过程中要给类添加新的方法时,一般不要去动原类. 再不改动原类的限制下,怎么拓展类的方法?以往我们的做法是新建子类使其继承该类,然后通过子类拓展类的行为. OC提 ...
- OC中分类(Category)和扩展(Extension)
1.分类的定义 category是Objective-C 2.0之后添加的语言特性,中文也有人称之为分类.类别.Category的主要作用是为已经存在的类添加方法.这个大家可能用过很多,如自己给UIC ...
- iOS中Category和Extension 原理详解
(一)Category .什么是Category? category是Objective-C .0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是为已 ...
- Category VS Extension 原理详解
(一)Category 1.什么是Category? category是Objective-C 2.0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是 ...
- Category与Extension详解
自己做笔录 用来后来回顾.. (一) Category 1.什么是category category是objective-C 2.0之后添加的语言特性,别人口中的分类.类别其实都是指category. ...
随机推荐
- XML文件与实体类的互相转换
XML文件与实体类的互相转换 一.将XML文件反序列化为实体类对象 1. 通常程序的配置信息都保存在程序或者网站的专门的配置文件中(App.config/web.config).但是现在为了演示XML ...
- Java 第11章 类的无参方法
类的无参方法 类的方法由哪几部分组成? 方法的定义: 1.访问权限修饰符 2.方法返回的数据类型 3.方法的名称 4.方法的主体 成员变量和局部变量的区别有那些? ~ 作用域不同 - 成员变量的作用域 ...
- log4j日志
1.引入的包 2.配置文件 该文件放到src路径下, log4j.rootLogger=DEBUG,CONSOLE,A1,im #DEBUG,CONSOLE,FILE,ROLLING_FILE,MAI ...
- Android相机使用(系统相机、自定义相机、大图片处理)
本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提一下有些人Surf ...
- 12.我们不是在真空里谈软件工程, 软件要运行在硬件芯片上面, 下面看看一个计算机芯片的发展历史: http://perspectives.mvdirona.com/2014/09/august-21-2014-computer-history-museum-presentation/ http://mvdirona.com/jrh/TalksAndPapers/DileepBhandar
电脑芯片的诞生和发展是20世纪最伟大的发明之一,芯片技术决定了计算机升级换代的速度,决定了计算机小型化实现的程度,决定了计算机智能化的程度,决定了计算机普及化的应用深度. 1971年11月15日,英特 ...
- 业务代码中(java class)中如何实现多线程,并且将子线程中的值随方法返回返回值
转载自http://bbs.csdn.net/topics/390731832 问题: public static String getAddress(final InputStream inputS ...
- Happymenu新的开始
1. 2014年10月28日入职happymenu,希望能和公司一起成长.年轻的时候就得多折腾! 2. 第一个任务:安装,配置ubuntu14环境,尽快熟悉操作.目前基本工作操作已经掌握. 安装好Ub ...
- UART的CTS与RTS
在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES) 推出了聪明猫(SmartModem)后就有点混淆了.在RS232中RTS 与CTS 是用来半双工模式下的方向切换:HAYES ...
- VS2013_QT255开发相关技巧理解心得
1. 在VS2013中打开QTCreater新建的项目 (1)通过双击.ui 打开QT的设计器,然后修改. (2)通过QT设计器,新建ui文件,放在VSQT的工程中 但是需要对此xxx.ui文件,进行 ...
- 20145301&20145321&20145335实验一
这次实验我的组员为:20145301赵嘉鑫.20145321曾子誉.20145335郝昊 实验内容详见:实验一报告