我对这些方面感到困惑。我在网上搜索。但每个网站都提供不同的解决方案。我是这项技术的新手。所以请提供更正此差异的清单和定义。
答案 0 :(得分:19)
类别允许您在不更改其类型的情况下展开现有类的API。子类化还扩展了API,但引入了一种新类型。此外,子类化允许您添加状态。
通知是让不相关的类进行通信的一种方式。另一方面,委托允许相关类使用更明确定义的接口进行通信。
答案 1 :(得分:7)
类别:类别提供了向对象添加功能而无需子类化或更改实际对象的功能。这是一个方便的工具,通常用于向现有类添加方法,例如NSString或您自己的自定义对象。
Know more for category from here :
categories in objective-c
子类:您在Cocoa应用程序中创建的每个对象都来自'NSObject'基础类。 NSObject类标识适用于所有对象的属性和方法。 NSObject类分为较小的对象组,称为子类。这些子类中的对象不仅符合NSObject的协议,还通过管理其子类的方法更精确地定义它们。每个对象类都继承自对象层次结构中它上面的超类,并且还声明了使它成为唯一类的方法。
Know more for subclasses from here :
Suclassing & SuperClassing
通知:通知是发送给一个或多个观察对象的消息,用于通知他们程序中的事件。 Cocoa的通知机制遵循广播模型。对于启动或处理程序事件的对象,这种方式可以与想要了解该事件的任意数量的对象进行通信。这些通知的接收者(称为观察者)可以根据事件调整自己的外观,行为和状态。发送(或发布)通知的对象不必知道那些观察者是什么。因此,通知是在计划中实现协调和凝聚力的有力机制。它减少了对程序中对象之间强依赖性的需求(这种依赖会降低这些对象的可重用性)。 Foundation,AppKit和其他Objective-C框架的许多类定义了程序可以注册观察的通知。
Know more for notifications from here :
NSNotification Class Reference
委托:委托是一个对象,当该对象遇到程序中的事件时,该对象代表另一个对象或与另一个对象协同工作。委托对象通常是响应者对象 - 即从AppKit中的NSResponder或UIKit中的UIResponder继承的对象,它响应用户事件。委托是委托对该事件的用户界面进行控制的对象,或者至少要求以特定于应用程序的方式解释该事件。基本上,委托是一种允许对象相互交互而不会在它们之间产生强烈相互依赖性的方法,因为这会使应用程序的设计变得不那么灵活。而不是彼此控制的对象,他们可以有一个委托,他们发送(或委托)消息,委托做他们做的任何事情,以响应和行动这个消息,然后通常返回到另一个对象
Know more for delegates from here :
Application Delegate Class Reference