首页 > 其他分享 >iOS Object-C 创建类别(Category) 与使用

iOS Object-C 创建类别(Category) 与使用

时间:2024-08-11 11:54:39浏览次数:11  
标签:Category 创建 Object iOS 添加 UIButton 方法 属性

有时候使用系统给出类或者第三方的类,但是呢它们自带的属性和方法又太少,不够我们的业务使用,这时候就需要给“系统的类或者第三方类”创建一个类别(Category),把自己的想添加的属性和方法写进来.

Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的

一:创建Category:

1.1. 目录右键 New File --> ios --> Objective-C File (如下图:)

1.2.填写信息

在File 写上类别的名字(理论上是随便起的,但是要做到望名知意,这里我给UIButton创建了一个类别,目的就是为了快速设置UIButton的X,Y,Width,Height 等数据,所以名字叫做GetFrame)

在File Type一栏选择 Categoru

在Class一栏选择你要给什么类创建类别(不仅可以给系统的UIButton,UIView等,还可以给第三方的或者自己创建的类创建类别.例如:可以给自己写的登陆类LoginViewController 创建分类)

1.3完成以上的步骤,就算是给一个已知的类创建了一个类别了.

如果你的Xcode是15.0以上,有可能创建不成功,因为Xcode15缺失了"CategoryNSObject"和"ExtensionNSObject"两个文件夹,解决方法看我上一篇文章:https://mp.csdn.net/mp_blog/creation/editor/141098276

二:使用Category

很多文章都说Category只可以添加方法,不可以添加属性,但是这种说法不完全正确,

事实上, 通过 Category 可以添加 实例方法、类方法、属性;

事实上, 通过 Category 可以添加 实例方法、类方法、属性;

事实上, 通过 Category 可以添加 实例方法、类方法、属性;

但是如果添加了属性,需要开发者自己实现 setter、 getter方法,不然系统会Crash,

PS:网上有很多文章说,Category新增属性的话,需要引入#import<objc/runtime.h> ,但是我不引入也没报错, 不知道是Xcode优化了(Xcode15.2),还是说本来就不需要

2.1.例如:UIButton+GetFrame.h 这个类别添加了 一个 - (void)eat方法, 和 X,Y ,name属性

2.2.在UIButton+GetFrame.m 里实现eat方法 和 X,Y的 set、get、name方法

NSString的name这里需要用到 objc_setAssociatedObject 、objc_getAssociatedObject 这两个方法

2.3.在ViewController里使用.(注意:需要倒入#import "UIButton+GetFrame.h")

特别鸣谢:本文章借鉴了这位作者的思路,感兴趣的朋友可以前往查看:https://www.jianshu.com/p/582cc3174581

标签:Category,创建,Object,iOS,添加,UIButton,方法,属性
From: https://blog.csdn.net/wyz670083956/article/details/141102502

相关文章

  • 把catoiOS介绍翻译10遍
    原文:catoiOS这是什么?catoiOS(catsOlympiadinInformaticsOpenSystem),是一个丰富多样的开放系统,其代码符合跨平台要求。它包含游戏、工具,还有个性化设置。包括各种活动在内,catoiOS致力于满足用户的所有需求.如何查看、下载catoiOScatoiOS官网下载catoiOS我可以一起开发......
  • IOS-增强现实的--NET-开发者指南-全-
    IOS增强现实的.NET开发者指南(全)原文:.NETDeveloper'sGuidetoAugmentedRealityiniOS协议:CCBY-NC-SA4.0一、设置您的环境首先,我们需要确保你已经安装了一些你需要的东西;之后,我们可以开始编写基本的增强现实应用并将其部署到您的iOS设备上。这是你需要的东西的清......
  • IOS-AR-游戏开发入门手册-全-
    IOSAR游戏开发入门手册(全)原文:BeginningiOSARGameDevelopment协议:CCBY-NC-SA4.0一、介绍在本书中,我们将学习如何使用Unity(Unity3D2018,或者更常见的是Unity)的游戏开发软件来创建一个增强现实(或AR)游戏。在这一章中,我们将介绍Unity的下载和安装过程,并了解Un......
  • Object
    ObjectObject类的常见方法有哪些?Object类是一个特殊的类,是所有类的父类,主要提供了以下11个方法:/***native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。*/publicfinalnativeClass<?>getClass()/***native方法,用于返......
  • 面向对象编程(OOP: Object Oriented Programming ):类、对象、构造方法、封装
    目录一、类1、定义(1)属性(2)方法2、类的定义方法二、对象1、定义2、对象的定义方法三、类和对象的关系1、现实世界都是由很多对象组成的,基于对象的共同特征抽象出类。2、对象:真实存在的对象3、类是对象的模板,对象是类的具体实例。4、一个类可以创建多个对象,同一个......
  • TypeError: ‘list’ object is not callable 深度解析
    TypeError:‘list’objectisnotcallable深度解析概述:在Python编程中,遇到“TypeError:‘list’objectisnotcallable”这一错误通常意味着你尝试以函数或方法的方式调用了一个列表对象。这种错误往往是由于编码疏忽或理解偏差导致的。本文将深度解析这一......
  • AttributeError: ‘list’ object has no attribute ‘append’
    AttributeError:‘list’objecthasnoattribute‘append’深度解析与实战指南概述:在Python编程中,AttributeError是一个常见的错误类型,它表明尝试访问或调用一个对象的属性或方法时失败了,因为该对象并没有这样的属性或方法。当你看到错误信息“Attrib......
  • 升级到iOS 18、降级回iOS 17
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!! 苹果官方下载链接:【操作系统OperatingSystems】:https://developer.apple.com/download/【应用Applications】:https://developer.apple.com/download/applications/【描述文件Pr......
  • nagios 飞信(fetion) 短信报警
    nagios飞信(fetion)短信报警张映发表于2012-04-25分类目录:服务器相关前面提到nagios用邮件来发邮件报警,如果能将报警信息发到手机上来不是更好。其实手机上也可以使用邮箱的。邮箱和手机绑定一下就行了。下面说一下,centos6.064位的系统下,用飞信来发报警信息。一,安装所要......
  • Element学习(axios异步加载数据、案例操作)(5)
    1、这次学习的是上次还未完成好的恶element案例,对列表数据的异步加载,并渲染展示。——>axios来发送异步请求(1)(2)在vue当中安装axios(注意在当前的项目目录,并且安装完之后再将项目重启一下)(3)这里我用到数据的url地址为:https://mock.apifox.cn/m1/3128855-0-default/emp/list......