近期,苹果开发者网站发起了Ask Apple活动,约请开发人员直接与苹果专家交流。
活动时刻是2022年10月17-21日,现在活动已完毕。
苹果为咱们保存了本次活动中一切内容供开发者查阅。
我认为有必要在这里对一些感爱好相关专题中问答内容进行汇总并翻译,供咱们参阅。
由于水平有限,文中的翻译或许有些不精确或有些小过错,还望咱们在阅读过程中了解。假如您发现过错或有更好的主意,欢迎指正
devtools-and-swift
怎么加速运用程序加载时刻
Developer:
为了加速咱们的运用程序加载时刻,应遵循哪些一般原则?
Apple:
好问题!您能够检查很多资源: 首要,我建议您看一看这篇文章: Developer:.apple.com/documentati… 假如您有更多的时刻,并有爱好了解更多有关它的信息,这里有两个关于该主题的WWDC精彩会议:
- Optimizing App Launch – WWDC19 – Videos – Apple Developer: 缓慢的运用程序发动令人懊丧。了解新的运用程序发动东西,并了解怎么使您的运用程序快速发动。获取见解…(32 KB)
- Link fast: Improve build and launch times – WWDC22 – Videos – Apple Developer: 了解怎么进步运用的生成和运转时链接功用。咱们将带您了解相关链接的幕后故事,…(13 KB)
是否能够运用Xcode检查最新的系统搜集数据
Developer:
感谢举办此次Q&A活动!我对系统搜集并经过 Xcode 公开的目标(电池运用情况、内存、翻滚等)有疑问。关于咱们的运用程序,咱们能够看到一些十分旧版别的条目,但没有最新版别的数据(6 个月以上)。 假如您已将自定义 MXMetricManager 增加到运用程序,是否有或许数据不会发送到 Xcode/App Store Connect?
Apple:
MXMetricManager(以及一般运用的 MetricKit)对您在 Organizer 中的数据没有影响。组织者设置了阈值,以防止传递冗余的数据 – 假如您在 feedbackassistant.apple.com 上运用您的运用程序的绑缚 ID 和称号提交反应,咱们能够检查并了解您或许看不到数据的原因!
Developer:
感谢您的弄清!我已提交 FB1170509
关于在多个推送告诉扩展之间共享数据时导致App溃散的问题
Developer:
咱们需要在多个推送告诉扩展之间共享数据,当咱们将运用形式设置为groups时,App有时会溃散。TestFlight供给以下信息:
Exception Type: EXC_CRASH (SIGKILL) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: RUNNINGBOARD 0xdead10cc
但这些信息并不是很有协助,是否有关于确定原因和解决问题的任何建议?
Apple:
嘿,你好!此中止原因(0xdead10cc)是由于某个文件或数据库在挂起时由您的运用/扩展程序保存。有关运用和扩展程序生命周期的详细信息,请检查以下 Developer:.apple.com:
App Extension Programming Guide: Understand How an App Extension Works
介绍怎么开发运用扩展,该扩展是向其他运用增加功用的可执行文件。
XCUI Framework在Xcode 14上似乎有问题
Developer:
你好! 在咱们的项目中,咱们对 CPU、磁盘和内存进行了功用测验。它们的确正常工作,直到咱们移动到新的Xcode 14。似乎在 Xcode 14 上 XCUI Framework被破坏了。咱们已经为苹果创立了一个Feedback Assistant ticket。可是咱们想知道您是否知道这个问题?
Apple:
感谢您向咱们发送有关此内容的反应报告!您能与咱们分享您提交的报告的FB编号吗?假如您手头没有,您应该能够在 feedbackassistant.apple.com 再次找到它。
Developer:
给你FB11675516
我想弥补一点弄清:问题不在于对反应本身的认识。这是关于Xcode 14上的XCUI Framework的问题。
Apple:
嘿,Dana,弄清一下 – 您的测验在视觉上看起来运转杰出,可是您没有看到磁盘运用情况数据?
Developer:
嘿!谢谢你重视这个问题!我确认 iOS 上的功用测验运转正常,但已中止供给成果。
Apple:
嗨,Dana – 你能把你的XCResults绑缚包增加到你提交的反应中吗?
Deleloper:
嗨,当然咱们会赶快在那里增加成果!
单例形式是依靠注入的抱负挑选吗?
Developer:
单例形式是依靠注入的抱负挑选吗? 在咱们的比如中,咱们有很多依靠项,尽管它十分方便,但咱们想知道它是否会直接影响运用程序的功用或功耗。
Apple:
首要 — 一直先剖析并运用数据进行优化。 从 CPU 运用率的视点来看,假如单例形式成为一个问题,我会感到惊讶,除非有一个十分频繁的调用站点反复查找单例,但这种事情应该显现在时刻配置文件中。 从内存运用的视点来看,单例一般永久存在,所以假如它们随着时刻的推移建立大状况,那肯定是一个问题。Memory Graph Debugger或许是检查你的运用保存的内存的好办法,以及它是否与保存在全局变量中的单例相关(以
__DATA
)。请注意,假如全局变量仅仅指向对象的指针,则它们不太或许成为问题,但假如您想检查__DATA
则能够运转symbols <binary>
关于运用程序挂起或许会导致UI无呼应的问题的解决方案
Developer:
关于运用程序挂起:咱们赞赏 Xcode 14 针对或许的运用挂起/UI 无呼应性的新运转时正告,例如来自“中心位置”的“CLLocationManager.location服务启用()”中的正告:
假如在主线程上调用此办法,则或许导致 UI 无呼应。相反,请考虑等候
-authorizationStatusForType:
回调并首要检查authorizationStatus
。 咱们也在调查“HKHealthStore”的“授权状况为类型”中的运用程序挂起,可是,Xcode不会专门为它们产生任何运转时正告。是否已知/预期-authorizationStatusForType:
或许会导致 UI 无呼应,假如是这样,有哪些或许的解决办法?
Apple:
嘿,你好 这是很好的反应!正如您所注意到的,Xcode 14 显现了有关某些 API 乱用的新运转时正告。现在,其间许多是关于经常被乱用的 API 的特殊情况正告,但咱们尚未审阅一切 API。 咱们现在没有HealthKit工程师,所以我无法回答来自
HKHealthStore
的授权状况是否authorizationStatusForType
,或许是否有异步代替方案能够运用。可是,假如能有这些信息,那就太好了。 假如您看到挂起是由authorizationStatusForType
引起的,您能否经过 feedbackassistant.apple.com 提交反应,要求修复挂起或生成运转时正告以进行API乱用? 假如您觉得文档不清楚怎么运用它,那也是很好的报告反应!
Developer:
会以文件形式提交反应。
运用商铺衔接剖析缺少的一个环节是可拜访性数据
Developer:
运用商铺衔接剖析缺少的一个环节是可拜访性数据。假如启用了ax功用的会话远远少于预期,则告诉开发人员将运用户,Apple的生态系统以及开发人员的市场渗透率获益。 由于这些是高度灵敏的数据,因此搜集、存储和剖析最好由有意识的第三方(即Apple)完结。 作为金融机构(贷方),咱们不希望挨近用户的医疗信息,但咱们的确希望标记可拜访性问题和回归,而不仅仅是手动测验和UI快照测验。咱们正在制定一个方案,该方案采纳许多不常见的措施来保证彻底匿名的可拜访性状况搜集,但它比大大都组织或许一时鼓起做的要杂乱得多。假如苹果供给代替方案,咱们很乐意放弃它。
Apple:
嘿 Ryan,您是否正在寻找每天运用ax的用户百分比之类的东西?您能否提交一份反应(feedbackassistant.apple.com),其间包括您的恳求,包括您的主意,即您将从这些数据中得出结论,并对您的重要性,然后将FB ID粘贴回此处?
Developer:
fb11705152 是的,或会话数,但更多在功用级别,例如,旁白、动态类型大小等。 除非百分比足够大(例如,30%的黑暗形式或10%的亮度下降),否则不报告百分比也是能够的,由于看到“1%的VoiceOver”实际上或许会下降开发人员的积极性并破坏目的。在这些情况下,只需一个“如预期”或“有问题的低”标签就足够了。
为了协助赶快加载或坚持功用,是否有适用于大大都App的最根底的代码
Developer:
为了协助赶快加载或坚持功用,是否有适用于大大都App的最根底的代码
仅仅略微超出了更改样板过错代码的根本规模,该代码使运用程序溃散为一些有用的过错处理,并且略微不那么根本,包括需要时的并发性。仍是它总是简直依靠于运用程序?
Apple:
嘿,你好!谢谢你的问题。一般,迭代代码并运用东西来衡量功用是一个很好的开始。咱们强烈建议您检测 XCTest 功用测验,并在整个开发过程中运用仪器来定量丈量功用。您能够在此处找到有关怎么运用这些东西以及更多东西的精彩入门讲座: developer.apple.com/videos/play… 我还建议您仔细阅读以下文章,以全面了解坚持杰出功用的一些关键概念: developer.apple.com/documentati…
关于App被挂起或中止运转的解决方案
Developer:
假如咱们的运用程序无法运用一切内核,但随后挂起/中止运转(无法创立新线程),咱们该怎么办?fb10893202
Apple:
嘿 Steven – 感谢您提交FB,并对延迟回复您表示歉意。
也感谢您的示例代码。假如你有一种办法能够可靠地将它演示到你所看到的状况来复现,那将是十分有协助的。 咱们还在Ventura拉修复了咱们认为或许是您的问题的调度行列。你能看看你是否也能在那里复现吗? 假如您能够复现并运用lldb附加并打印输入行列的状况和dispatch_get_global_queue(QOS_CLASS_DEFAULT,0)将有助于调度团队缩小此规模。
以上便是一切devtools-and-swift
专题的问答内容汇总。今后我还会持续整理其他专题的内容汇总,咱们能够持续重视。
Todo List
- design
- graphics-and-games
- photos-and-camera
- swiftui