ios - 这是什么代码监控?-> `stack_logging_type_dealloc|stack_logging_type_alloc`
问题描述
我不知道代码的含义是什么。type == (stack_logging_type_dealloc|stack_logging_type_alloc)
它是否监视分配?还是dealloc?或其他?代码来源:https ://opensource.apple.com/source/Libc/Libc-583/gen/stack_logging.c.auto.html
我知道按位或的意思|
。但是在腾讯库中名为OOMDeteotor(https://github.com/Tencent/OOMDetector)。其中有这样的代码:
if (type == (stack_logging_type_dealloc|stack_logging_type_alloc)) {
}else if (type == stack_logging_type_dealloc) {
}else if((type & stack_logging_type_alloc) != 0){
}
为什么在else if xxx中,它再次监控dealooc
解决方案
为了我们的目的,让我们说stack_logging_type_dealloc
是0010b
和stack_logging_type_alloc
是0001b
让我们一次一个。
type == (stack_logging_type_dealloc|stack_logging_type_alloc)
type
如果具有值0011b
( 0010b | 0001b
),则此表达式为真。
type == stack_logging_type_dealloc
如果type
具有值,则此表达式为真0010b
。
(type & stack_logging_type_alloc) != 0
type
如果值包含 ,则此表达式为真0001b
。例如,如果type
有 value 1010b
,那么表达式将为 false。但是,如果type
有 value 1011b
,则表达式为真。
从逻辑上看:
type == (stack_logging_type_dealloc|stack_logging_type_alloc)
如果type
有标志stack_logging_type_dealloc
并stack_logging_type_alloc
设置,并且没有设置其他标志,则为真。
type == stack_logging_type_dealloc
如果设置type
了标志stack_logging_type_dealloc
,并且没有设置其他标志,则为真。
(type & stack_logging_type_alloc) != 0
如果设置type
了标志stack_logging_type_alloc
,则为真,无论在type
.
推荐阅读
- java - Android Studio 从 URL 下载文件权限被拒绝错误
- javascript - Struts 2 JQuery Datepicker 问题与 Java.util.Date
- coldfusion - 如何将 ColdFusion 版本从 10 升级到 2016?
- c# - 在玩家游戏中切换回合
- java - 如何在类构造函数中正确使用 findViewById?
- r - 找出字符匹配不起作用的原因
- ansible - 使用模式为主机定义 ansible-host 变量
- java - 解密加密的私钥:数据不是对象 ID
- javascript - React Minified error #130 仅在构建期间而不是在运行 yarn start 时
- javascript - 如何使用按钮在javascript中重新开始倒计时