Delegate、Category、Extension

Delegate

是把一个类自己需要做的一部分事情,让另一个类(也可以就是自己本身)来完成。 
delegate的方法在被委托的类中必须实现。

设计模式中的委托模式。

Category

即使在你不知道一个类的源码情况下,向这个类添加扩展的方法。

通过在interface中声明一个额外的方法并且在implementation 中定义相同名字的方法即可,不必实现。分类的名字(括号括起来)表示的是:对于声明于其他地方的这个类,在此处添加的方法是额外的,而不是表示这是一个新的类。你不可以通过分类为一个类添加额外的成员变量。虽然Category不能够为类添加新的成员变量,但是Category包含类的所有成员变量,即使是@private的。Category可以重新定义新方法,也可以override继承过来的方法。要添加额外方法,分类必须在第一个@interface中声明方法。

设计模式中的策略模式。

Extension

类扩展就像匿名(没有那个括号里面的名字)的分类一样,除了一样不同的是,类扩展声明必须在@implementation在实现。 
类扩展中添加的方法是一个required API,如果不去实现,编译器会警告,而且这个方法的声明可以不在第一个@interface中去声明。

时间: 2024-07-30 20:28:58

Delegate、Category、Extension的相关文章

Objective -C NSDate、Category   、Extension、Protocol

NSDate的使用 NSDate是Cocoa中用于处理日期和时间的基础类,封装类某一给定的时刻,具体的日期,时间和时区 使用+date方法获取当前日期和时间 例如  :NSDate*nowDate = [NSDate date]: 注意,,NSLog(@"%@",nowDate): 无论你是哪个时区的时间,打印时间,打印时总是打印对应的0时区时间 NSTimeinterval NSTimeInterval(即double类型) 用以表示以秒为单位的时间间隔 可以使用-initWithT

autorelease、Block、Category、ARC

1.autorelease方法的基本作用 给对象发送一条autorelease消息, 会将对象放到一个自动释放池中 当自动释放池被销毁时,会对池子里面的所有对象做一次release操作 会返回对象本身 调用完autorelease方法后,对象的计数器不变 autorelease的好处 : 不用再关心对象释放的时间 不用再关心什么时候调用release autorelease的使用注意 占用内存较大的对象不要随便使用autorelease 占用内存较小的对象使用autorelease,没有太大影响

Action、Category、Data、Extras知识详解

开头 Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等. 诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为: Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xml中设置.默认

Intent中的四个重要属性——Action、Data、Category、Extras

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为: Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xml中设置.默认为:DE

<转>四个重要属性——Action、Data、Category、Extras

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为: Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xml中设置.默认为:DE

指定Action、Category调用系统Activity

1.Intent对象详解 Android的应用程序包含三种重要组件:Activity.Service.BroadcastReceiver,应用程序采用一致的方式来启动它们----都是依靠Intent来进行启动的,Intent就封装了程序想要启动程序的意图,不仅如此,Intent还用于与被启动组件进行交换信息. 组件类型 启动方法 Activity startActivity(Intent intent) startActivityForResult(Intent intent,intreques

PowerShell_零基础自学课程_6_PS中获取帮助信息详解、管道、格式化输

前些文章陆续的说了一些关于这些主题,但是讨论的都不够深入,今天我们深入的了解一下获取帮助信息.管道以及格式化输出的内容. 一.获取帮助信息 在PS中获取帮助信息,最常用的有: -? .get-command和get-help.这三者获取的信息不是完全一致的,并且由于get-command和get-help是cmdlet:因此具有很多实用 的参数来帮助我们获取我们想要的信息. 1.1  -? 参数 如果我们知道某个cmdlet的拼写,但是不知道他的用户,那么最快速的方法就是用:-? 参数. 例如:

category、protocol、delegate总结

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

Objective-C:分类(Category、extension)

分类(Category .Extension) (一)分类的划分 (2) 1.(命名的类别)类别Category:只能添加新的方法,不能添加新变量. 2.(未命名的类别)类的扩展Extension://扩展一般直接写在类的实现文件中     //扩展中定义的都是类中私有的实例变量和方法 (二)分类的使用 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的