<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iOS 归档 - 初晴神社</title>
	<atom:link href="https://vki.cc/tag/ios/feed/" rel="self" type="application/rss+xml" />
	<link>https://vki.cc/tag/ios/</link>
	<description>白露的博客</description>
	<lastBuildDate>Tue, 20 Apr 2021 02:40:09 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://cdn.vki.cc/wp-content/uploads/2018/03/cropped-icemaplen-1-32x32.png</url>
	<title>iOS 归档 - 初晴神社</title>
	<link>https://vki.cc/tag/ios/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>iOS 开发踩坑日记</title>
		<link>https://vki.cc/greattruth/846/</link>
					<comments>https://vki.cc/greattruth/846/#respond</comments>
		
		<dc:creator><![CDATA[白露]]></dc:creator>
		<pubDate>Wed, 14 Apr 2021 07:08:57 +0000</pubDate>
				<category><![CDATA[咸鱼心得]]></category>
		<category><![CDATA[朝闻道]]></category>
		<category><![CDATA[iOS]]></category>
		<guid isPermaLink="false">https://vki.cc/?p=846</guid>

					<description><![CDATA[<p>XXX must be used from main thread only. 问题场景：某游戏在播放视频时闪退。连接 pc 后使用 XCode 运行，最终停在代码段： 并且提示 XXX must be used from main thread only. 该错误会导致 app 闪退，如&#8230;</p>
<p><a href="https://vki.cc/greattruth/846/">iOS 开发踩坑日记</a>最先出现在<a href="https://vki.cc">初晴神社</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<h4 id="xxx-must-be-used-from-main-thread-only" class="has-vivid-red-color has-text-color wp-block-heading">XXX must be used from main thread only.</h4>



<p class="has-black-color has-text-color wp-block-paragraph">问题场景：某游戏在播放视频时闪退。连接 pc 后使用 XCode 运行，最终停在代码段：</p>



<figure class="wp-block-image size-large"><img  fetchpriority="high"  decoding="async"  width="960"  height="192"  src="https://oss.vki.cc/wp-content/uploads/2021/04/1618383962-image.png"  alt=""  class="wp-image-847"  title="image.png"  srcset="https://cdn.vki.cc/wp-content/uploads/2021/04/1618383962-image.png 960w, https://cdn.vki.cc/wp-content/uploads/2021/04/1618383962-image-800x160.png 800w, https://cdn.vki.cc/wp-content/uploads/2021/04/1618383962-image-120x24.png 120w, https://cdn.vki.cc/wp-content/uploads/2021/04/1618383962-image-90x18.png 90w, https://cdn.vki.cc/wp-content/uploads/2021/04/1618383962-image-320x64.png 320w, https://cdn.vki.cc/wp-content/uploads/2021/04/1618383962-image-560x112.png 560w"  sizes="(max-width: 960px) 100vw, 960px" ></figure>



<p class="has-black-color has-text-color wp-block-paragraph">并且提示 XXX must be used from main thread only.</p>



<p class="has-black-color has-text-color wp-block-paragraph">该错误会导致 app 闪退，如题，应该将语句放到主线程中执行。</p>



<p class="has-black-color has-text-color wp-block-paragraph">这里使用 dispatch_async 分发线程：</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">dispatch_async(dispatch_get_main_queue(), ^{
        // 代码放这里。
    });</pre>



<p class="has-black-color has-text-color wp-block-paragraph">最终代码：</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 自動消灯を無効にする
void UI_SetIdleTimerDisabled(bool b)
{
    dispatch_async(dispatch_get_main_queue(), ^{
        // 主线程执行。
        [[UIApplication sharedApplication] setIdleTimerDisabled:b];
    });
}</pre>



<h4 id="%e7%bb%8f%e8%bf%87-apple-developer-enterprise-program-%e9%87%8d%e7%ad%be%e7%9a%84-app-%e9%97%aa%e9%80%80" class="has-vivid-red-color has-text-color wp-block-heading">经过 Apple Developer Enterprise Program 重签的 app 闪退</h4>



<p class="wp-block-paragraph">Apple Developer Enterprise Program 可让大型组织开发内部专属的 app 并向其员工部署。此计划仅适用于需要使用安全的内部系统或经由移动设备管理解决方案，向员工私密地直接分发的特例情况。</p>



<p class="has-black-color has-text-color wp-block-paragraph">一般游戏公司都会使用这个服务，绕过 APP Store 来给测试设备安装 app。我们公司也是，某天发现一个游戏上传到该平台重签后，在手机上出现闪退情况，但是使用 PC 连接真机安装没有问题。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 报错如下。
Bootstrapping failed for &lt;FBApplicationProcess: 0x10a253640; application&lt;com.xd.collections>:&lt;invalid>> with error: &lt;NSError: 0x28071d920; domain: RBSRequestErrorDomain; code: 5; reason: "Launch failed."> {
    underlyingError = &lt;NSError: 0x28071d140; domain: NSPOSIXErrorDomain; code: 88>;
}</pre>



<p class="has-luminous-vivid-orange-color has-text-color has-medium-font-size wp-block-paragraph"><strong>解决方法：关闭 bitcode &#8230;</strong></p>



<p class="wp-block-paragraph">说实话，我确实没往这方面想。。我以为 Apple Developer Enterprise Program 只是单纯的换个证书重签名，就像 apk 重签那样。</p>
<p><a href="https://vki.cc/greattruth/846/">iOS 开发踩坑日记</a>最先出现在<a href="https://vki.cc">初晴神社</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://vki.cc/greattruth/846/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
