之前一篇文章《iOS关联对象》详细介绍了如何通过关联对象添加属性,本篇文章将介绍如何通过runtime的class_addProperty或class_addIvar动态添加属性,并且带领大家看看这两个方法底层是如何实现的。
class_addProperty添加属性对于已经存在的类我们用class_addProperty方法来添加属性,而对于动态创建的类我们通过class_addIvar添加属性
转载
2023-08-11 09:55:03
130阅读
# iOS类别添加属性的实现方法
作为一名经验丰富的开发者,我将教会你如何在iOS中实现类别添加属性的功能。在开始之前,我们先了解一下整个过程的流程,并且给出每一步需要做的事情和相应的代码。
## 流程图
```mermaid
erDiagram
classDiagram
小白 -->|1.提出问题| 经验丰富的开发者
小白 -->|2.请求帮助| 经验丰富的开发者
原创
2023-10-12 08:57:24
119阅读
最近跟人交流时,提到一个问题,说iOS分类中不能添加属性。这里探讨一下不能添加的原因和添加的方法。 首先,创建一个person类,代码如下:XGPerson.h#import <Foundation/Foundation.h>
@interface XGPerson : NSObject
/// 年龄
@property (nonatomic, copy) NSString *age
转载
2023-08-10 19:13:47
243阅读
通过@property声明的属性,系统会自动生成setter和getter方法,但是在类别中声明的属性系统不会自动生成这两个方法,需要手动实现这两个方法。@property (nonatomic, assign) BOOL shouldPush;利用运行时runtime处理两个方法#import <objc/runtime.h>- (BOOL)shouldPush{ NSNumber *_shouldPush = objc_getAssociatedObject(self,
原创
2021-08-04 10:27:25
771阅读
# iOS开发:类别添加属性的深度解析
在iOS开发中,Objective-C的类别(Category)是一种强大的功能,允许开发者为现有的类添加新方法而无需修改原始类的代码。除了添加方法,我们还可以通过类别为类添加属性,这在某些情况下非常有用。本文将详细探讨如何在iOS开发中使用类别添加属性,并附上相应的代码示例,方便大家参考。
## 为什么需要使用类别
首先,为什么会有添加属性的需求呢?
1、IOS的概述 IOS是苹果公司开发的一种专门的操作系统(os),用在移动终端上的。目前终端设备有:Iphone,Ipad,Ipod tooch,Ipad mini,Apple TV。(这时候可以拓展一下操作系统的概念。)操作系统:简称OS,管理和控制计算机硬件与软件资源的计算机程序,任何软件的运行使用必须依附于操作系统,离开它无法工作。操作系统的常用的种类有
转载
2024-01-03 10:55:22
29阅读
数据存储的核心都是写文件。 属性列表:只有NSString、NSArray、NSDictionary、NSData可writeToFile;存储依旧是plist文件。plist文件可以存储的7中数据类型:array、dictionary、string、bool、data、date、number。 对象序列化(对象归档):对象序列化通过序列化的形式,键值关系存储到本地,转化成二进制流。通过runti
转载
2024-06-27 20:00:46
26阅读
OC 对类的宽展有三中方式,分类,延展,继承,延展和继承不必多说。今天就说下如何给分类添加属性。我们知道OC比较爽的就是可以添加分类,在分类中添加自己喜欢的方法。可能有人会问了,不能添加属性啊 ,其实不然。比如我要在一个按钮的分类中添加一个数组属性就可以这样用@interface UIButton (Transcation)
@property (nonatomic, strong) NSArra
转载
2023-05-31 11:52:02
263阅读
方法概念语法格式:<Access Specifier> <Return Type> <Method Name>(Parameter List){ Method Body}访问修饰符 返回类型 方法名称(参数列表){ 方法主体}Access Specifier:访问修饰符这个决定了变量或方法
# iOS类别设置属性
在iOS开发中,类别(Category)是一种非常有用的机制,它允许我们在不修改原始类的情况下为现有类添加新方法。除了添加方法之外,我们还可以使用类别为类添加属性。本文将介绍如何使用类别设置属性,并提供代码示例。
## 什么是类别
类别是Objective-C中的一个特性,它允许我们在不修改原始类的情况下为现有类添加新方法。它可以让我们在不继承类的情况下扩展类的功能。
原创
2023-10-12 08:57:40
133阅读
一.类和对象之间的关系. 1.先有类才能有对象,类顾名思义就是一类具有相同属性事物的统称,是一个概念,而对象是具体的,是类的一个具体体现。
动物就是一个类,没有具体是事物,狗也是一个类,也没具体到一个事物,但是,我养的旺财就是对像了,这就具体到了一个 二、类简介 创建时有一个.h 和一个.m文件而类的声明是在.h文件中完成的.
#import
//注意的地方
前提:已经成功申请了iOS开发者账号
1、授权设备:进入Apple Developer会员中心,点击图中的iOS Provisioning Portal,进入开发者授权设置系统:在设置界面中,可以选择点击页面下方的助手来运行向导:点击左侧导航的Device,进入授权设备的页面,点击右上方的Add Device按钮可以添加一个设备:添加设备的时候可以指定设备的名字
转载
2023-11-01 20:38:35
0阅读
# iOS 分类(Category)中添加属性的实现
在iOS开发中,分类(Category)是一种非常实用的技术,它允许我们为现有的类添加新方法,而不需要子类化该类。这在某种程度上扩展了类的功能,使得代码的复用成为可能。然而,值得注意的是,分类不支持添加实例属性,这使得一些场景下的需求变得复杂。本文将介绍如何在分类中添加属性,并提供相关代码示例。
## 分类的基本用法
在iOS中,分类的声
一、什么是分类?概念:分类(Category)是OC中的特有语法,它是表示一个指向分类的结构体指针。根据下面源码组成可以看到它没有属性列表,原则上是不能添加成员变量(其实可以借助运行时功能,进行关联),只能增加方法。 typedef struct objc_category *Category;
struct objc_category {
char *category_name OBJC2_U
转载
2023-08-01 22:04:00
282阅读
标签(空格分隔): Objective-C runtime iOS 分类 category 分类属性方法自动生成编码全过程。背景 分类,在 iOS 开发中,是常常需要用到的。在分类里添加属性也是常有的事,但分类中无法添加实例变量,编译器也无法为提供分类中属性的 getter 和 setter 方法了。一般而言,需要手动来实现这两个方法,如果只是用来存储变量的话,关联对象很容易做到这一点:@in
转载
2024-03-01 12:19:23
103阅读
static 静态类变量静态变量也叫类变量,静态属性。是该类中所有对象共享的变量,任何一个对象去访问它取到的值都是相同的,同样的,任何一个对象去修改它,影响到所有的对象。静态变量在类加载时就已经生成了。普通变量加上static后,就成为静态变量,否则它还是个普通属性。静态变量的生命周期会随着类的加载而开始,随着类的结束而消亡。什么时候会用到静态类变量当我们需要让某个类里的对象都共享一个变量时,就可
转载
2023-11-24 02:20:26
67阅读
概述属性就是对于一个对象的抽象刻画[1] . 一个具体事物,总是有许许多多的性质与关系,我们把一个事物的性质与关系,都叫做事物的属性。 事物与属性是不可分的,事物都是有属性的事物,属性也都是事物的属性。 一个事物与另一个事物的相同或相异,也就是一个事物的属性与另一事物的属性的相同或相异。 由于事物属性的相同或相异,客观世界中就形成了许多不同的事物类。具有相同属性的事物就形成一类,具有不同属性的事物
转载
2023-08-29 20:55:43
201阅读
附加属性是Extensible Application MarkupLanguage (XAML) 定义的一个概念。附加属性旨在用作可在任何对象上设置的一类全局属性。在中,附加属性通常定义为没有常规属性“包装”的一种特殊形式的依赖项属性。也就是说,附加属性是说一个属性本来不属于某个对象,是根据某种特殊需求附加到该对象的。举个形象的例子,去做火车,你就有了座位号这个属性;假如不做火车就没有这个属性。
Objective-C语言 分类(什么是分类?分类的实现机制、原理是怎样的?我们应该怎样为一个分类提供实例变量呢?--涉及到第2点关联对象的考察)关联对象(Runtime分析和查看 分类和关联对象的实现机制、原理)扩展、代理怎么使用(分类和扩展的区别在哪里?)NSNotification(通知的实现机制和原理)KVO、KVC( KVO、KVC的实现机制、原理、包括涉及到了哪些设
转载
2023-10-15 12:37:03
61阅读
很多人可能会问 iOS的分类和扩展的区别,网上很多的讲解,但是一般都是分类讲的多,而这也是我们平常比较常用的知识;但是,对于扩展,总觉得理解的朦朦胧胧,不够透彻。这里就讲一下我自己的理解,但是这个理解也是集合了前辈的经验来的,只不过我用大白文再延伸一点。 对于类扩展,先看下面的概念: 能为某个类附加额外的属性,成员变量,方法声明
一般的类扩展写到.m文件中
一般的私有属性写
转载
2024-06-16 20:33:25
46阅读