iOS Foundation 重要知识点

本文探讨了iOS中NSSet, NSHashTable等集合类的特点及其内部实现方式,并介绍了NSBundleResourceRequest如何帮助开发者实现资源的动态加载,从而优化应用程序的启动速度和内存占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS Foundation SDK

NSMapTable
  • NSSet/NSMutableSet 拥有所包含对象的strong refrence。
  • NSHashTable是mutable可变的,没有不可变的类。
  • NSHashTable可以拥有成员的weak refrence;
  • NSHashTable可以在输入的时候copy成员。
  • NSHashTable可以包含任意的指针,可以使用指针去比较或者hash校验。
NSHashTable
  • NSDictionary和NSMutableDictionary会copy keys(这也是导致他们构造的- 时候性能相对低一点的原因),还会持有object的strong引用。
  • NSMapTable也都是mutable的,没有不可变类型。
  • NSMapTable也可以在input的时候copy它的值。
  • NSMapTable能包含任意指针,用指针来进行比较或者hash校验
NSBundleResourceRequest

动态加载资源,减少包大小
- 确定资源分级,哪些是必须的,哪些是延迟加载的,哪些是可以远程的资源。
- Xcode的Resource Tags选项中,添加Tag,并在Prefetched设置优先级,Images.xcassets里的图片也可以设置Tags。
- 使用NSBundleResourceRequest根据tags获取资源,它是iOS9新增类,具体参考NSBundleResourceRequest_Class,重点有初始化、下载、优先级、progress属性和结束。
- 配置存放资源的服务端。
- Xcode Build Settings里设置服务端asset URL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值