在很多三方库和平时的代码编写中,经常会使用到关联对象,在 OC 中,一般是在类的分类(Category)中添加关联属性,在 swift 中,一般是在扩展(extension)中添加,当然你也可以在其他地方进行关联属性操作。分类中使用属性,只会做方法的声明。这是因为分类不能直接添加成员变量(可以查看分类的底层结构,并没有设计存放成员变量),但是可以使用关联对象间接达到调用效果。笔者在看这块知识之前,
转载 2023-07-13 13:46:47
52阅读
前言associatedObject又称关联对象。顾名思义,就是把一个对象关联到另外一个对象身上。使两者能够产生联系。目前我能想到的关联对象的使用场景有如下几点:运行时给cagetory添加getter和setter。因为category中添加的property不会生成带下划线"_"的成员变量以及getter和setter的实现。所以可以通过关联对象实现getter和setter。有时需要在对象中
关联对象常见的一种做法在分类里想增加属性,由于只会生成 set get方法,并不会存在 属性与成员这个时候的做法往往是 在set 里 调用objc_setAssociatedObjectget里使用 objc_getAssociatedObject那么 关联对象究竟如何实现,这是本次探究的主题找源码出现了两个关键变量关于 DisguisedPtr<objc_object> ,顺便了解一
苹果公司正在研究开发其Secure Enclave技术,以安全地允许多个用户共享一台iPhone或iPad,而不向其他用户透露私人信息。苹果最近获得一项名为"在安全飞地中提供域,以支持多个用户"的专利。它非常具体地讲述了安全地允许多个用户使用一台设备。这可能是指Mac,也可能是指iOS。苹果甚至提到既包括单用户移动计算设备,也包括多用户笔记本和桌面计算设备。不过鉴于Mac已经有多用户支持,这项专利
本文翻译自:How do I associate file types with an iPhone application?On the subject of associating your iPhone app with file types. 关于将iPhone应用程序与文件类型相关联的主题。In this informative question I learned that apps
转载 2024-03-13 16:14:50
53阅读
一. CALayer的基本操作.1.CALayer简介:CALayer我们又称为层,在每个UIView内部都有一个layer的属性,UIView之所以能够显示,就是因为它里面有layer层,才具有显示的功能,我们通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,例如可以给UIView设置阴影,圆角,边框等等...2.操作layer改变UIView外观.2.1 设置阴影//默认
转载 2024-09-20 16:52:35
32阅读
前言AssociationedObject多用于在Category中为特定类扩展成员变量,也有用于在运行时为某些对象动态创建成员变量。AssociationedObject可以说是一种特殊的成员变量。 这篇文章是来详细解释AssociationedObject的实现原理,篇幅较长。相关方法objc_AssociationPolicytypedef OBJC_ENUM(uintptr_t, objc
转载 2024-10-25 22:07:07
48阅读
iOS开发中,关联属性(Associated Objects)是一种强大的机制,允许我们为那些不能直接在类中定义的属性动态地添加属性。然而,这一机制有时也会引发一系列问题。本文将以“iOS关联属性问题解决过程”为主题,详细记录问题背景、错误现象、根因分析、解决方案、验证测试和预防优化。 用户场景还原 在一个iOS应用中,我们需要为UIViewController类动态地添加一个属性,以便存储
原创 5月前
33阅读
1. 库的链接静态库静态库可以理解成目标文件的存档 当链接静态库时, static linker会把库中的目标文件跟应用程序目标代码打包成一个可执行文件动态库动态库可以按需load(称为动态加载库)。可以在启动时load, 也可以是在运行时 (称为动态连接库)framework对苹果开发者来说,framework可以理解成一个包含了动态库、头文件、以及资源文件的bundle我的理解库是可执行的代码
# iOS XIB 关联的科普 在iOS开发中,XIB文件是用来描述用户界面的文件格式。通过XIB文件,我们可以设计布局、设置控件的属性以及实现控件的相互关联。在这篇文章中,我们将深入探讨XIB文件的关联机制,并提供一些代码示例来演示如何使用它。 ## 什么是XIB文件? XIB文件是XML文件的一种格式,主要用于存储iOS应用程序中用户接口的布局。这些文件通常在Interface Buil
原创 7月前
42阅读
联合体(union) 构造数据类型的方式有以下两种: 结构体(struct) 联合体(union,也称为共用体)结构体结构体是指把不同的数据组合成一个整体,其变量是共存的,变量不管是否使用,都会分配内存。缺点:所有属性都分配内存,比较浪费内存,假设有4个int成员,一共分配了16字节的内存,但是在使用时,你只使用了4字节,剩余的12字节就是属于内存的浪费优点:存储容量较大,包容性强,且成
转载 2024-01-28 00:48:29
120阅读
前言在iOS开发过程中,会经常使用到一个修饰词“weak”,使用场景大家都比较清晰,用于一些对象相互引用的时候,避免出现强强引用,对象不能被释放,出现内存泄露的问题。weak 关键字的作用弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时候自动被设置为 nil。weak底层原理1.weak编译解析首先需要看一下weak编译之后具体出现什么样的变化,通过Clang的方法把weak编译成C++
转载 2023-07-25 17:37:47
112阅读
iOS开发中,我们经常使用到category,使用category可以给类添加方法或者属性,在添加属性的时候,如果仅仅声明属性,编译器并不会自动生成set和get方法,此时直接使用属性进行读写会发生crash,此时需要通过关联对象来增加属性的set和get方法实现。关联对象的使用先创建一个类名称为Custom,并且增加category命名为Prop,写入代码Custom.h#import &lt
在开始阅读本篇博客之前,建议先去看看我的上一篇博客iOS底层探索之对象的本质和类的关联特性initIsa(上) 本篇内容主要讲下OC当中类的关联相关的initIsa1.initIsa结构从苹果开源的objc底层源码可以看到OC底层是通过initIsa和cls类进行关联的//关联对象 if (!zone && fast) { obj->initInst
      有时需要在对象中存放相关信息,这时我们通常会从所属的类中继承一个字类,然后改用这个字类对象。然而并非所有情况下都能这样做,有时候类的实例可能是由某种机制创建的,而开发者无法令这种机制创建出自己所写的字类实例。OC中有一种很强大的特性可以解决此问题,就是“关联对象”。可以通过下列方法管理关联对象:void objc_setAssociatedObject (
转载 2023-10-27 11:54:48
77阅读
关联关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。关联是基于关键字的,因此,我们可以为任何对象增加任意多的关联,每个都使用不同的关键
背景在项目开发过程中,经常会遇到从上一个页面跳转到下一个页面的需求,俗称下钻。比如在概览页面的数据,需要查看详情,点击某个图表或按钮,即可跳转到详情页面查看详情数据。目前为止,我们的项目中还没有一个统一的页面跳转方法,实现页面跳转的方式也因人而异,并且现有的很多项目只能在两个页面之间来回跳转,基本没有完整的实现多个页面互相跳转的功能。关联页面跳转做为项目的常用功能,并且执行的都是重复性高的代码逻辑
Vue
转载 2021-03-16 21:33:22
691阅读
2评论
http://blog.jobbole.com/79570/ 在前面一篇文章中,我们介绍了Runtime中与类和对象相关的内容,从这章开始,我们将讨论类实现细节相关的内容,主要包括类中成员变量,属性,方法,协议与分类的实现。 本章的主要内容将聚集在Runtime对成员变量与属性的处理。在讨论之前,我们先介绍一个重要的概念:类型编码。 类型编码(Type Encoding) 作为对Runtime的补
转载 2023-07-21 15:36:15
96阅读
# iOS 设置关联域的科普文章 在移动互联网日益发展的今天,用户体验变得尤为重要。作为 iOS 开发者,我们经常需要通过深度链接来提升用户的体验。当应用和网页之间能够高效地进行交互时,用户的满意度就大大增加。而在 iOS 中,设置关联域(Associated Domains)是实现这一目标的重要步骤。 ## 什么是关联域? 关联域技术允许您的应用与网页进行深度链接。当用户点击网页中的链接时
原创 2024-10-05 03:40:19
320阅读
# iOS 关联对象的使用指南 在iOS开发中,关联对象是一种非常强大的特性,它允许开发者在运行时为现有类添加属性,而不需要修改其源代码。这对于借助分类扩展功能非常有用。本文将分步骤介绍如何在iOS中使用关联对象,适合刚入行的开发者学习。 ## 流程概述 以下是使用关联对象的基本步骤: | 步骤 | 描述
原创 2024-10-17 13:59:26
37阅读
  • 1
  • 2
  • 3
  • 4
  • 5