面试题问: Category能否添加成员变量?如果可以,如何给Category添加成员变量?答:不能直接添加成员变量,但是可以通过runtime的方式间接实现添加成员变量的效果。RunTime为Category动态关联对象使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系。我们通过之前的学习知道,对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容的内存,
    在iOS开发中,开发者要提高开发效率,技巧的掌握必不可少,框架的正确使用更是必不可少。今天小编和大家分享的就是iOSRealm框架,这个框架是一个比较新的框架,由于文章篇幅问题,就先展示Realm框架的基础部分。    为了让大家能更好的理解和掌握iOS Realm框架相关知识,本文将通过一个简单的案例为大家展示,这个案例是一位
转载 2023-12-13 16:45:53
38阅读
1. 库的链接静态库静态库可以理解成目标文件的存档 当链接静态库时, static linker会把库中的目标文件跟应用程序目标代码打包成一个可执行文件动态库动态库可以按需load(称为动态加载库)。可以在启动时load, 也可以是在运行时 (称为动态连接库)framework对苹果开发者来说,framework可以理解成一个包含了动态库、头文件、以及资源文件的bundle我的理解库是可执行的代码
一、Realm简单介绍1、Realm简介 Realm是由美国YCombinator孵化的创业团队历时几年打造,第一个专门针对移动平台设计的数据库 Realm是一个跨平台的移动数据库引擎,目前支持iOS、Android平台,同时支持Objective-C、Swift、Java、React Native、Xamarin等多种编程语言 Realm并不是对SQLite或者CoreData的简单封装, 是由
转载 2024-01-19 15:42:44
125阅读
在很多三方库和平时的代码编写中,经常会使用到关联对象,在 OC 中,一般是在类的分类(Category)中添加关联属性,在 swift 中,一般是在扩展(extension)中添加,当然你也可以在其他地方进行关联属性操作。分类中使用属性,只会做方法的声明。这是因为分类不能直接添加成员变量(可以查看分类的底层结构,并没有设计存放成员变量),但是可以使用关联对象间接达到调用效果。笔者在看这块知识之前,
转载 2023-07-13 13:46:47
52阅读
联合体(union) 构造数据类型的方式有以下两种: 结构体(struct) 联合体(union,也称为共用体)结构体结构体是指把不同的数据组合成一个整体,其变量是共存的,变量不管是否使用,都会分配内存。缺点:所有属性都分配内存,比较浪费内存,假设有4个int成员,一共分配了16字节的内存,但是在使用时,你只使用了4字节,剩余的12字节就是属于内存的浪费优点:存储容量较大,包容性强,且成
转载 2024-01-28 00:48:29
120阅读
前言associatedObject又称关联对象。顾名思义,就是把一个对象关联到另外一个对象身上。使两者能够产生联系。目前我能想到的关联对象的使用场景有如下几点:运行时给cagetory添加getter和setter。因为category中添加的property不会生成带下划线"_"的成员变量以及getter和setter的实现。所以可以通过关联对象实现getter和setter。有时需要在对象
释放双眼,带上耳机,听听看~!*/*即所有文件的意思,但是很多时候我们并不是需要所有的文件,这个时候就要学习一样mineType了。一、mineTypemineType媒体类型,一般是[type]/[subtype]格式。1.typeText:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据
# iOS 关联对象的使用指南 在iOS开发中,关联对象是一种非常强大的特性,它允许开发者在运行时为现有类添加属性,而不需要修改其源代码。这对于借助分类扩展功能非常有用。本文将分步骤介绍如何在iOS中使用关联对象,适合刚入行的开发者学习。 ## 流程概述 以下是使用关联对象的基本步骤: | 步骤 | 描述
原创 2024-10-17 13:59:26
37阅读
关联对象常见的一种做法在分类里想增加属性,由于只会生成 set get方法,并不会存在 属性与成员这个时候的做法往往是 在set 里 调用objc_setAssociatedObjectget里使用 objc_getAssociatedObject那么 关联对象究竟如何实现,这是本次探究的主题找源码出现了两个关键变量关于 DisguisedPtr<objc_object> ,顺便了解一
更新版本号:黑鲨游戏手机2 Pro DLTR2010300CN00MQ4更新方式:本次更新已开启,11月10日开始陆续推送为验证更新通道畅通性,极少数用户会提前收到更新,未收到更新的小伙伴请稍作等待,更新很快到来。本次更新仅支持通过OTA更新,请点击系统设置-系统更新-检测更新,下载并更新系统。更新内容:欢迎体验JOYUI 12新增 小鲨同学、宏功能、语音游戏助手、狩猎模式和弹幕通知等更新
iOS开发中,我们经常使用到category,使用category可以给类添加方法或者属性,在添加属性的时候,如果仅仅声明属性,编译器并不会自动生成set和get方法,此时直接使用属性进行读写会发生crash,此时需要通过关联对象来增加属性的set和get方法实现。关联对象的使用先创建一个类名称为Custom,并且增加category命名为Prop,写入代码Custom.h#import &lt
前言在iOS开发过程中,会经常使用到一个修饰词“weak”,使用场景大家都比较清晰,用于一些对象相互引用的时候,避免出现强强引用,对象不能被释放,出现内存泄露的问题。weak 关键字的作用弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时候自动被设置为 nil。weak底层原理1.weak编译解析首先需要看一下weak编译之后具体出现什么样的变化,通过Clang的方法把weak编译成C++
转载 2023-07-25 17:37:47
112阅读
在开始阅读本篇博客之前,建议先去看看我的上一篇博客iOS底层探索之对象的本质和类的关联特性initIsa(上) 本篇内容主要讲下OC当中类的关联相关的initIsa1.initIsa结构从苹果开源的objc底层源码可以看到OC底层是通过initIsa和cls类进行关联的//关联对象 if (!zone && fast) { obj->initInst
# iOS 关联对象存放位置的实现指南 ## 1. 引言 在iOS开发中,关联对象(Associated Objects)使我们能够动态地将属性添加到现有的类中,而无需直接修改类的源代码。这对分类(Category)特别有用。本文将详细介绍如何在iOS中实现关联对象的存放位置,包括每一步的代码和解释。 ## 2. 流程概述 下面的表格展示了实现关联对象存放位置的整个流程: | 步骤 |
原创 10月前
19阅读
关联关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。关联是基于关键字的,因此,我们可以为任何对象增加任意多的关联,每个都使用不同的关键
变量常量,注释,分号,整数,浮点数。数值行类型转换,类型别名,波尔值,元组,可选,断言 // // main.swift // swift1 // // Created by tqh on 15/6/8. // Copyright (c) 2015年 tqh. All
(学习安卓的过程中,了解到Realm数据库框架,并尝试使用,将一些心得记下来,以供以后考古,哈哈)1.关于RealmRealm本质上是一个嵌入式数据库,支持运行在手机、平板和可穿戴设备上,其设计有自己的数据库引擎,在于避免 ORM 架构以及其带来的抽象方式,目标是取代SQLite 为什么使用realm:易用 Ream 不是在SQLite基础上的ORM,它有自己的数据查询引擎。并且十分容易使用。快速
转载 11月前
67阅读
iOS 运行时之 Associative(关联) iOS 下有很多运行时特性,这里介绍一下 Associative(关联) 这个运行时特性,以及它一些使用场景。 Associative 意思为关联iOS 下有很多运行时特性,这里介绍一下 Associative(关联)这个运行时特性,以及它一些使用场景。 Associative意思为关联,能够将两个对象建立一种关系。这种关系是一种 从属关系,也
转载 2023-10-07 15:29:32
307阅读
关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。在类的定义之外为类增加额外的存储空间     使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。     关联是基于关键字的,因此,我们可以为任何对象增加任意多的关联,每个都使用不同的关键字即可。关联
转载 2023-09-13 16:13:36
89阅读
  • 1
  • 2
  • 3
  • 4
  • 5