IOS类别

  类别是在原有类的基础上,不通过继承的方式,添加新的方法,分散类的实现,方法的私有化.

  有时我们需要在一个已经定义好的类中增加一些方法,而不想去重写该类。比如,当工程已经很大,代码量比较多,或者类中已经包住很多方法,已经有其他代码调用了该类创建对象并使用该类的方法时,可以使用类别对该类扩充新的方法。

注意:1.类别只能扩充方法,而不能扩充成员变量。

  2.名称冲突,即类别中的方法与现有方法重名。当发生名称冲突时,类别具有更高的优先级。可以在自己的类别方法名中增加一个前缀,以确保不发生名称冲突。

类别和扩展是有区别的:

   1.扩展写法上和类别一致,只是括号中没有类别的描述

  2.扩展可以添加属性.变量,而类别不能

时间: 2024-10-10 21:32:16

IOS类别的相关文章

iOS类别(Category)

iOS类别(Category)与扩展(Extension) 苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. #import @interface NSObject (Category) - (void)myMethod; @end 这是一个最简单的Category,作用于NSObject类,给NSObject添加了一个方法. 使用Category需要注

iOS类别Category与扩展Extension

本文主要是详解iOS类别(Category)与扩展(Extension,匿名类别),请登陆疯狂软件教育官网.Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. [objc] view plaincopy在CODE上查看代码片派生到我的代码片 #import @interface NSObject (Category) - (void)myMethod; @end 这是一个

iOS类别(Category)与扩展(Extension)-b

苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. #import @interface NSObject (Category) - (void)myMethod; @end 这是一个最简单的Category,作用于NSObject类,给NSObject添加了一个方法. 使用Category需要注意的点: (1) Category的方法不一定非要在@imp

ios 类别和扩展-赵小波

类别 @interface ClassName ( CategoryName ) // method declarations @end Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. 注意事项 1:类别是类的扩展,只可以声明方法,不可以声明变量.并且,类别的方法优先级较高,可覆盖原类方法. 2:类别的方法中,不可以调用super方法.--类别的局限 3:catego

iOS类别(Category)与扩展(Extension,匿名类别)

Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. #import @interface NSObject (Category) - (void)myMethod; @end 这是一个最简单的Category,作用于NSObject类,给NSObject添加了一个方法. 使用Category需要注意的点: (1) Category的方法不一定非要在@implementat

iOS类别(category)不能添加成员变量但是可以添加属性的问题

类别不需要介绍了把,网上一大堆(利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类). 这篇博客主要想讨论关于类别不能添加成员变量的问题. 图中是我创建的一个UIImageView的类别,名称为Network,我在给类别添加实例变量view1的时候报错了(实例变量是成员变量的一种,实例变量应该是由类定义的变量),意思是实例变量不能被放在类别中. 但是localImag

IOS 类别与扩展的区别 (category & extensions)

类别 .h @interface NSString(XXXXXX) -(NSInteger)getLen; @end .m @implementation NSString(XXXXXX) -(NSInteger)getLen { return 0; } @end //////////////////////////////////////////////////////////////////////////////////////////////////// 扩展 .h @interface

IOS 类别

在编写面向对象的程序时,你经常希望向现有的类添加一些新的行为:你总是能够为对象提供使用这些新方法的新手段.当希望为现有的类增加新行为时,我们通常会创建子类,但是有时候子类并不方便.例如,你可能会希望为NSString类增加一些新行为,但是你知道NSString实际上只是一个类簇的前台表示,因而无法为这样的类创建子类.在其他情况下,你也许可以创建子类但你使用的却是工具包或类库,因为又无法处理新类的对象.例如,当使用类方法stringWithFormatFor生成一个新的字符串时,你新建的NSStr

[iOS类别的使用]---导航栏leftBarButtonItem图标修改

类别(Category) 修改特定的ViewController的导航栏Item图标 在项目中,遇到这样一个问题: 一个新增的VIewController1 想要push到原有的别的VIewController2中时 原有的VIewController2的导航栏左侧leftBarButtonItem图标,变成了系统自带的样式, 而且,由于项目混合使用了代码和StoryBoard开发,更增加了统一修改leftBarButtonItem的难度! 一般来说,我们会在 VIewController2 中