`

Object-C动态特性之protocol

ios 
阅读更多
在Object-C中,Protocol被用来定义一组独立于具体类的属性和方法,其不具体实现这些方法,任何类都可以实现Protocol,Protocol可以继承另一个Protocol,从特征上看Protocol的作用类似于Java世界的接口。

Protocol在具体的使用过程中基本上采用了“Delegation”模式,即采用Protocol定义方法,然后不同的类使用不同的具体实现,从而完成某个行为的多态。 在iOS的SDK类库中大量使用了这样的Delegate的模式,比方说UITableViewDataSource定义了Table View如何使用数据源的一系列方法,开发者需要使用Table View时,就需要实现这一系列方法,然后把自己定义的Table View delegate给当前对象。这样,不同界面的Table View就可以基于自身对象的实现做不同的展现。

定义protocol非常简单,如下:
@protocol MyProtocol <NSObject>
// list of methods and properties
@end


除此之外,protocol定义时,还支持2个关键字,@required和@optional。顾名思义:凡是在@required后面的方法,实现该protocol的类必须实现,optional后面的方法可以不实现。默认所有的方法和属性都是@required的。
@protocol MyProtocol <NSObject>
// list of methods and properties
@required
// list of methods and properties
@optional
// list of methods and properties
@end


另外,protocol还可以继承另一个protocol。
@protocol A
     -(void)methodA;
@end
@protocol B <A>
     -(void)methodB;
@end


实现protocol也非常简单, 在Object-C中,一个类要使用某个protocol,只需要在类定义时加上‘<ProtocolName,...>’就行了。
@interface MyClass : NSObject <MyProtocol, AnotherProtocol, YetAnotherProtocol>
...
@end


最后,和Java中的接口一样,一旦某个对象实现了某个protocol, 那么就可以用该protocol的指针来指向该对象。这就是为什么当当前对象实现了UITableViewDataSource protocol,就可以把Table View的delegate赋值给当前对象。 在UITableView的代码中,dataSource属性的定义是这个样子的。
...
id <UITableViewDataSource>  _dataSource;
…




0
0
分享到:
评论

相关推荐

    如何学习Object-C语言《PDF文档》

    Object-C在C语言的基础上增加了面向对象的特性,因此熟悉C语言的基本语法、控制结构、函数和指针等概念至关重要。要花时间去熟练掌握这些基础知识,因为它们构成了Object-C的基础。 学习Objective-C的类和对象概念...

    如何学习Object-C语言(PDF文档)

    Object-C在C语言的基础上增加了面向对象的特性,因此熟悉C语言的基本语法、控制结构、函数和指针等概念至关重要。要花时间去熟练掌握这些基础知识,因为它们构成了Object-C的基础。 学习Objective-C的类和对象概念...

    如何学习Object-C语言

    Object-C在C语言的基础上增加了面向对象的特性,因此熟悉C语言的基本语法、控制结构、函数和指针等概念至关重要。要花时间去熟练掌握这些基础知识,因为它们构成了Object-C的基础。 其次,学习Objective-C的类和...

    Object-C语言教程

    3. **动态类型**:Object-C支持动态类型,编译时不知道对象的确切类型,运行时才确定。 4. **协议(Protocol)**:协议定义了一组可选的方法,类似于Java或C#的接口,允许类间进行约定。 5. **分类(Category)**...

    Object-C语言教程&案例&相关项目资源(PPT文档)

    Object-C,作为苹果公司开发的Objective-C的缩写,是一种基于C语言的面向对象编程语言,广泛应用于iOS和macOS平台的软件开发。它在C语言的基础上添加了Smalltalk式的消息传递机制,使得面向对象编程更加灵活。 **1....

    Object-C语言教程、案例、相关项目资源《PPT文档》

    提供的《Object-C语言教程&案例&相关项目资源.pdf》很可能包含了Object-C的基础语法、高级特性、实际项目案例等内容。阅读这样的资源可以帮助你更深入地理解和掌握Object-C,同时,`说明文档.txt`可能提供了资源的...

    Object-C语言教程&案例&相关项目资源

    - **类别**可以为已存在的类添加方法,无需继承,是Object-C的一个独特特性,常用于扩展系统类的功能。 3. **协议(Protocol)** - **协议**类似于Java或C#的接口,定义了一组可选或必需的方法,可以被多个类...

    《Object-Oriented Programming with Object C》 英文高清原版 PDF

    2. **Objective-C语言特性**:Objective-C是在C语言的基础上扩展的,保留了C的语法结构,同时添加了消息传递机制、类和其他面向对象的特性。消息传递是Objective-C的关键,通过`[receiver message]`的方式调用方法。...

    Object-C语言教程0220.zip基础知识及相关案例

    此外,Objective-C支持动态类型和运行时特性,这使得在程序运行过程中可以改变对象的类型,或在运行时决定要执行的方法,这是许多其他静态类型语言所不具备的。然而,这也对调试和性能优化提出了挑战,因此理解何时...

    Object-C/Swift官网文档

    Object-C,作为苹果早期的开发语言,是基于C语言并扩展了Smalltalk式的消息传递机制。它的主要知识点包括: 1. **消息传递**:这是Object-C的核心特性,通过消息传递实现对象间的通信,如`[receiver method]`语法。...

    Object-C语言入门教程&代码示例 .zip

    本教程将帮助初学者了解并掌握Object-C的基本概念、语法特性以及实际编程技巧。 ### 1. 对象与类 在Object-C中,一切皆为对象。对象是类的实例,而类是对象的蓝图。定义一个类需要使用`@interface`关键字,其中...

    Object-C语言,用C语言实现面向对象

    Object-C,全称Objective-C,是一种基于C语言的、面向对象的编程语言,由Stepanov和Moss在1983年为NextStep操作系统开发。苹果公司广泛使用Objective-C作为其iOS和macOS操作系统以及相关框架如Foundation和AppKit的...

    Object-C的语法与Cocoa框架_V1.0_ios_base32u_

    Object-C是苹果公司为Mac OS X和iOS操作系统开发的应用程序编程语言,它是C语言的超集,融入了Smalltalk的面向对象特性。了解Object-C的基础语法和Cocoa框架对于开发苹果平台的应用至关重要。 **一、Object-C语法...

    Object-C语言相关项目的示例

    总结来说,"Object-C语言相关项目的示例"涵盖了Objective-C的关键特性,包括类、消息传递、Category、协议、内存管理和Blocks,以及如何利用Foundation和UIKit框架进行应用开发。通过深入学习和实践这些示例,开发者...

    Object-C的语法与Cocoa框架

    Object-C是在C语言的基础上增加了面向对象的特性,其设计目标是为了提高程序的可维护性和代码复用性。 #### 二、GNUStep的安装 GNUStep是一个遵循GNU通用公共许可证的开源项目,提供了类似于苹果Cocoa框架的API集合...

    object-c学习教程PPT

    Objective-C(Object-C)是苹果公司开发的一种面向对象的编程语言,主要应用于iOS和Mac OS X操作系统。它是C语言的超集,包含了Smalltalk风格的消息传递机制,因此它具有C语言的底层控制能力和Smalltalk的灵活性。在...

    Object-C语言教程&案例&相关项目资源.docx

    Objective-C是一种面向对象的编程语言,它是C语言的一种超集,保留了C语言的所有特性,并在此基础上添加了Smalltalk风格的消息传递机制。该语言由NeXT公司的Brad Cox和Tom Love在20世纪80年代初开发,并在NeXTSTEP...

    Object-C 代码质量检测工具,基于OClint修改.zip

    在这个修改版中,可能包含了针对Objective-C特性的特定优化,例如处理类别(category)、协议(protocol)、动态类型等问题。可能还增加了自定义规则,用于检查特定的编程习惯或者团队约定。为了了解具体修改了哪些部分...

    Object-C编程之道

    《Object-C编程之道》这本书是面向那些已经具备C语言基础,并希望深入理解Objective-C这门编程语言的读者。Objective-C,简称ObjC,是苹果公司开发的C语言的超集,主要用于iOS和macOS平台的应用程序开发。它在C语言...

Global site tag (gtag.js) - Google Analytics