OC底层 - runtime 一个char变量按位保存多个BOOL变量值
在arm64之后, 优化了isa指针实现, 使用共同体实现isa, 可以节省内存:
以下使用一个char变量保存多个BOOL变量的值, 实现代码:
///左移操作
#define LPTail (1<<0)
#define LPRich (1<<1)
#define LPHandsome (1<<2)
//
// Person.m
// demo007_runtime_isa_共用体
//
// Created by Batac on 2020/12/7.
//#import "Person.h"@interface Person()
{//一个字节 可以表示8个BOOL变量char _tailRichHandsome;
}
@end@implementation Person-(BOOL)getTail{return !!(_tailRichHandsome & LPTail);
}-(void)setTail:(BOOL)tail{if (tail) {_tailRichHandsome = _tailRichHandsome | LPTail;}else{_tailRichHandsome = _tailRichHandsome & ~LPTail;}
}-(BOOL)getRich{return !!(_tailRichHandsome & LPRich);
}-(void)setRich:(BOOL)rich{if (rich) {_tailRichHandsome = _tailRichHandsome | LPRich;}else{_tailRichHandsome = _tailRichHandsome & ~LPRich;}
}-(BOOL)getHandsome{return !!(_tailRichHandsome & LPHandsome);
}-(void)setHandsome:(BOOL)handsome{if (handsome) {_tailRichHandsome = _tailRichHandsome | LPHandsome;}else{_tailRichHandsome = _tailRichHandsome & ~LPHandsome;}
}@end
OC底层 - runtime 一个char变量按位保存多个BOOL变量值相关推荐
- 用html5交换两个变量的值,JavaScript交换两个变量值的七种解决方案
前言 这篇文章总结了七种办法来交换a和b的变量值 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了 ...
- 通过位运算进行两个变量值的交换功能
通过位运算进行两个变量值的交换功能 一般交换方法 通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 位运算交换方法 采 ...
- 原创 OC底层 - runtime 结构体+位域
使用结构体位域: #import "Student.h"@interface Student() {//一个字节 可以表示8个BOOL变量/**位域*/struct{char ti ...
- 位运算交换两个变量值
两个变量怎么交换值 1.通常的办法是设一个临时变量tmp,将两个值进行交换. 2.但这里有个有趣的方法是利用位运算进行交换值的操作. 首先有个原理需要知道: 若a^b=c,则c^b=a,c^a=b 可 ...
- oracle定义变量sql赋值_ORACLE获取SQL绑定变量值的方法总结
本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法,在SQL优化调优过程中,经常会用到这方面的知识点.在此梳理.总结一下这方面的知识点,方面日后查找.翻阅. 方法1:查询V$SQL V$S ...
- android活动中的变量,在不同的活动中保持变量值Android Studio
我的应用程序中有选项卡式活动.在每个标签页中,我都有一个(切换)按钮,可以通过单击切换到打开和关闭.当我移动到另一个标签并回到相同的位置时,它就会熄灭.我想保持它的价值,以便在切换到其他活动时不会改变 ...
- python定义一个空变量_Python 学习笔记 - Python 变量
Python 变量 创建变量 变量是存储值的容器.Python 里没有专门的命令来声明变量.当把一个值赋给一个变量时,它就被创建了.如: x= 8 name = "空悟孙" 变量不 ...
- tensorflow 实现打印预训练的模型中的变量名和变量值
tensorflow保存的预训练的模型包含3个文件: model_name.data-00000-of-00001 (保存网络中每个变量值,包括所有的weights.biases.gradients等 ...
- OC底层原理之Runtime
本系列主要是看完MJ的OC底层原理课程所写的总结,希望自己能加深对iOS底层的了解. OC的信息机制 OC中的方法调用其实都是转成objc_msgSend函数的调用,给receiver(方法调用者)发 ...
最新文章
- 更新oracle数据库表如何实现主键自增长
- Json和XML之间的对比
- maven中scope属性的
- 链表C++ | 实现头部、尾部插入数据_1
- 拨开云雾见日月:SQL Server 调优之查询存储
- windows下SVN日志反馈中文乱码的解决方法
- SpringCloud-Config
- python实现人脸检测及识别(1)---- 采集人脸数据
- ns3--入门基础概念
- 软回车和硬回车的区别
- 浅谈fiddler抓包工具中自动断点——Before Requests与After Responses断点功能
- cmake取消宏定义_CMake基本使用
- 【文献阅读】Pre-Training With Whole Word Masking for Chinese BERT
- 图片服务器FastDFS的安装及使用
- 计算机win7卡顿如何解决方法,win7电脑玩2D游戏经常发生卡顿六大解决方法
- Spring security oAuth2 密码错误中英文提示问题
- php语言进销存单位换算,单位换算工具(在线换算单位器)
- 【新闻推荐系统】(task1)系统搭建基本流程
- 2021年中式烹调师(初级)考试题及中式烹调师(初级)试题及解析
- 汉语编程工具易语言即学即用教程pdf