Mru*_*nal 1 oop objective-c categories objective-c-category
据我所知,Objective-C是一个面向对象的编程语言,而Categories是Objective-C提供的一个特性.
所以我想知道类别功能正在根据哪个OOP概念
提前致谢.
Mrunal
@ Abizern的答案很好.我想补充说,类别是动态调度的一种形式,特别是它们可以用于扩展现有类而无需子类化.
也就是说,面向对象编程更像是一种设计理念,而不是一组语言特性.有人可能会问"后缀增量对应的OOP功能是什么?" 答案是"没有;这是一种语言特征." 类别主要不是用于实现OOP设计(尽管有时它们是如上所述).他们最初的用途是打破大型实施文件.由于语言缺陷(缺乏@optional),他们后来的用途是提供非正式协议.而今天,它们主要用于沿特定于平台的线路(NSString+UIStringDrawingvs NSString+AppKitAdditions)分割代码.
扩展类似于类别,类似地主要是语言功能而不是OOP设计功能.它们在某种程度上促进了封装,但主要是在使用它们之前定义方法的任意编译器要求的副作用(我说"任意"因为这与设计或开发人员的需求无关;它只是简化了编译器).不应将扩展与一些深层OOP要求混淆.
因此,使用类别在运行时附加其他功能是动态调度.除此之外,它只是一种用于几种非OOP事物的语言功能.