iOS摸鱼周报 第四十九期

本期周报聚焦Google Chrome 100版本发布,介绍了Apple针对阅读器App的新审核指南。面试解析部分讨论了OC中StripeMap模板类的分离锁优化和CPU Cache Line相关知识。此外,推荐了Swift 5.6和Xcode 13.3的新特性,以及在线设计工具即时设计和代码转换工具Decode。
摘要由CSDN通过智能技术生成

本期概要

  • 话题:Chrom 100 发布,关于阅读器类的 App 审核指南有所更新
  • 面试模块:Runtime 中的 StripeMap 模板类
  • 优秀博客:Swift 5.6 和 Xcode 13.3 的新特性和新功能
  • 学习资料:即时设计是一款可以在线实时协作的专业 UI 设计工具
  • 开发工具:Decode,将 Xcode Interface Builder 文件(XibStoryboard 文件)转换为 Swift 源代码。

资讯

Google Chrome 发布到版本号 100

新版本更新不算大,将继续大幅减少内存、CPU占用率,速度会更快。本次更新应用图标也进行了更换,红黄绿相交边缘的阴影变得更小了。从图标的发展来看,Google 的设计风格越来越扁平化。

「阅读器」App 分发的更新

去年,Apple 宣布 了 2022 年初在 App Store 上将进行的更新,该更新将允许「阅读器」App 的开发者在 App 中提供一个指向其网站的链接,以便用户创建或管理帐户。从今天开始,《App Store 审核指南》中的准则 3.1.3(a) 将会更新,阐明阅读器 App 的开发者现在可以申请外部链接的帐户授权。

面试解析

整理编辑:Hello World

StripeMap<T> 模板类

StripeMap<T> 是 OC Runtime 中定义的一个类,用于引用计数表、Synchroinzed、以及属性设置时的 lock列表等。该类可以理解成是一种特殊的 hashmap。

特殊性体现在:一般的 hashmap key&value 是一一对应的,即使存在哈希冲突,也会通过其他方法解决该冲突,但是StripeMap是 key&value 多对一的。

我们去思考下 apple 为什么要将内存管理的表结构设计为 StripeMap 类型?先了解下简化后定义:

```cpp enum { CacheLineSize = 64 };

template class StripedMap {

if TARGETOSIPHONE && !TARGETOSSIMULATOR

enum { StripeCount = 8 };

else

enum { StripeCount = 64 };

endif

struct PaddedT {
    T value alignas(CacheLineSize); // 对齐
};

PaddedT array[StripeCount];

}; ```

StripeMap存在的意义就是优化高频访问 <T>产生的性能瓶颈,尤其是在多线程资源竞争场景下。根据注释主要体现在以下方面

  • 对象结构内部维护一个数组,根据设备的不同分成不同的页,移动设备是 8 页&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值