在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变量值相关推荐

  1. 用html5交换两个变量的值,JavaScript交换两个变量值的七种解决方案

    前言 这篇文章总结了七种办法来交换a和b的变量值 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了 ...

  2. 通过位运算进行两个变量值的交换功能

    通过位运算进行两个变量值的交换功能 一般交换方法 通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 位运算交换方法 采 ...

  3. 原创 OC底层 - runtime 结构体+位域

    使用结构体位域: #import "Student.h"@interface Student() {//一个字节 可以表示8个BOOL变量/**位域*/struct{char ti ...

  4. 位运算交换两个变量值

    两个变量怎么交换值 1.通常的办法是设一个临时变量tmp,将两个值进行交换. 2.但这里有个有趣的方法是利用位运算进行交换值的操作. 首先有个原理需要知道: 若a^b=c,则c^b=a,c^a=b 可 ...

  5. oracle定义变量sql赋值_ORACLE获取SQL绑定变量值的方法总结

    本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法,在SQL优化调优过程中,经常会用到这方面的知识点.在此梳理.总结一下这方面的知识点,方面日后查找.翻阅. 方法1:查询V$SQL V$S ...

  6. android活动中的变量,在不同的活动中保持变量值Android Studio

    我的应用程序中有选项卡式活动.在每个标签页中,我都有一个(切换)按钮,可以通过单击切换到打开和关闭.当我移动到另一个标签并回到相同的位置时,它就会熄灭.我想保持它的价值,以便在切换到其他活动时不会改变 ...

  7. python定义一个空变量_Python 学习笔记 - Python 变量

    Python 变量 创建变量 变量是存储值的容器.Python 里没有专门的命令来声明变量.当把一个值赋给一个变量时,它就被创建了.如: x= 8 name = "空悟孙" 变量不 ...

  8. tensorflow 实现打印预训练的模型中的变量名和变量值

    tensorflow保存的预训练的模型包含3个文件: model_name.data-00000-of-00001 (保存网络中每个变量值,包括所有的weights.biases.gradients等 ...

  9. OC底层原理之Runtime

    本系列主要是看完MJ的OC底层原理课程所写的总结,希望自己能加深对iOS底层的了解. OC的信息机制 OC中的方法调用其实都是转成objc_msgSend函数的调用,给receiver(方法调用者)发 ...

最新文章

  1. 更新oracle数据库表如何实现主键自增长
  2. Json和XML之间的对比
  3. maven中scope属性的
  4. 链表C++ | 实现头部、尾部插入数据_1
  5. 拨开云雾见日月:SQL Server 调优之查询存储
  6. windows下SVN日志反馈中文乱码的解决方法
  7. SpringCloud-Config
  8. python实现人脸检测及识别(1)---- 采集人脸数据
  9. ns3--入门基础概念
  10. 软回车和硬回车的区别
  11. 浅谈fiddler抓包工具中自动断点——Before Requests与After Responses断点功能
  12. cmake取消宏定义_CMake基本使用
  13. 【文献阅读】Pre-Training With Whole Word Masking for Chinese BERT
  14. 图片服务器FastDFS的安装及使用
  15. 计算机win7卡顿如何解决方法,win7电脑玩2D游戏经常发生卡顿六大解决方法
  16. Spring security oAuth2 密码错误中英文提示问题
  17. php语言进销存单位换算,单位换算工具(在线换算单位器)
  18. 【新闻推荐系统】(task1)系统搭建基本流程
  19. 2021年中式烹调师(初级)考试题及中式烹调师(初级)试题及解析
  20. 汉语编程工具易语言即学即用教程pdf

热门文章

  1. ubuntu系统安装时 MBR和GPT的区别
  2. 华师计算机在线作业答案,2016春季华师计算机基础在线作业答案
  3. iframe相关,iframe样式
  4. QT子窗体直接调用父窗体成员、函数、控件的方法
  5. 电脑可以上网,浏览器无法访问
  6. Tomcat服务器端口修改
  7. 微信小程序开发之页面布局
  8. Appium TestNg Maven Android Eclipse java简单启动实例
  9. Vue框架背后的故事
  10. android dy 完结篇(0x3)