iOS 开发百问(2)
11、无法调试设备“Error launching remote program: failed to get the task forprocess 6405.”
ad-hoc Profile不支持调试。改为development profile。
12、OTA无法下载,提示“无法下载应用程序”
.plist文件中的 bundle-identifier写错了(或者包含中文字符),比如:
<key>bundle-identifier</key> <string>com.xxx.--APN--</string>
其中的com.xxx.—APN—中包含中文(“--”),应改为英文。
或者签名证书是无效的。请在Orgnizer中检测签名证书。
12、ASIHTTPRequest中经常出现EXEC_BAD
使用ASIHTTPRequest进行异步请求时,经常出现程序崩溃。尤其在是请求过程中(未Finished),如果你切换了视图的时候。因为是异步请求,request对象可能在任何时候调用delegate(ViewController),而此时ViewController却可能已经释放了。因为UIKit随时会释放当前不显示的ViewController。如果你切换了ViewController,那么那个被隐藏的ViewController随时会被释放。如果request回调ViewController的delegate方法时,而那个ViewController正好被UIKit给释放,则会导致EXEC_BAD。在官方文档中也提到:Requests don’t retain their delegates, so if there’s a chance your delegatemay be deallocated while your request is running, it is vital that you clearthe request’s delegate properties. In most circumstances, if your delegate isgoing to be deallocated, you probably also want to cancel request, since you nolonger care about the request’s status
因此在使用ASIHTTPRequest进行异步编程时,我们要自己清空request的delegate属性。在delegate(ViewController)的dealloc方法中你应该:
[request clearDelegatesAndCancel]; [request release];
当然,request不能是临时变量,而应当是一个retained的成员对象(或者属性),否则你无法在dealloc方法中clearDelegatesAndCancel。
13、Assertion failure in -[UIActionSheet showInView:]
在主线程中打开action sheet:
[selfperformSelectorOnMainThread:@selector(showActionSheet) withObject:nilwaitUntilDone:NO];
showActionSheet方法:
-(void) showActionSheet { sheet = [[UIActionSheet alloc] initWithTitle:@"This is my ActionSheet!" delegate:self cancelButtonTitle:@"OK"destructiveButtonTitle:@"Delete Message!" otherButtonTitles:@"Option1", @"Option 2", @"Option 3", nil]; [sheet showInView:self.view]; }
14、RegexKitLite编译错误
编译时提示如下错误:
"_uregex_find", referenced from: _rkl_search in RegexKitLite.o ……
在Build Settgins的Other Linke Flag中加入
-licucore
15、Archive时遇到“ResourceRules.plist:cannot read resources”错误
在build settings中找到Code Signing Resource Rules Path,填入$(SDKROOT)/ResourceRules.plist
16、使用ZombieEnable解决EXEC_BAD_EXCESS错误
这个错误是向一个release对象发送消息导致的。可以通过开启ZombieEnable参数来查找真正的问题。
Edit Scheme,选择Run …Debug,打开Arguments组,在Environment Variables中添加一个参数:
运行程序,当出现EXEC_BAD_EXCESS错误时,控制台中会输出具体出错的信息,比如:
*** -[ITSMTicketCell release]: message sent to deallocated instance0x897e920
直接指明了是由于某个对象在被释放之后,你发送了一条消息给它。
17、 关于Xcode4无法调试2代代老设备的问题
升级到Xcode4以后,你会发现许多程序无法在2代设备(有些3代设备,比如iTouch 3实际上仍然是2代的硬件)上运行了,并且Xcode4仅仅“Running…”就直接“Finished…”了,无论是Xcode控制台还是设备日志中,都没有任何提示。
注意:2代和3代的区别在于cpu架构。2代设备使用ARMv6架构cpu,3代设备使用ARMv7架构cpu。 iPhone 2G/3G,iPod 1G/2G属于ARMv6架构(2代),iPhone3GS/4, iPod 3G,iPad属于ARMv7架构(3代)。
stackoverflow上有关于这个的帖子,其中shapecatcher的答案是最准确的:
http://stackoverflow.com/questions/6378228/switching-from-xcode3-to-xcode4-cant-load-programs-onto-older-ipod-touch
1、打开Target的Build Settings,找到Architectures选项,将其从“$(ARCHS_STANDARD_32_BIT)”修改为“armv6$(ARCHS_STANDARD_32_BIT)”。注意大小写是敏感的。“$(ARCHS_STANDARD_32_BIT)”是一个变量,实际上等同于armv7。
2、Base SDK不需要改变,仍然是Lastest iOS。
3、打开Target的info,找到Required device capabilities,将下面的armv7删除。这个选项是Xcode4自己添加在工程中的默认设置,如果不去掉它,第1步-第2步的工作是无法生效的。
18、“Avalid provisioning profile for this device was not found.”
在你的开发证书中增加该设备的UDID。
19、将设备添加到 portal
连接设备,打开Orgnizer。在设备列表中选中设备,点击右边窗口左下角的“Add to Portal”按钮。或者在设备列的设备上右击,选择“AddDevice to Provisioning Portal”。
20、renew profile
打开Orgnizer,在LIBRARY中选择Provisioning Profiles。在右边窗口选择要renew的profile,点击右下角的“Refresh”按钮。输入Portal的密码,profile将被renew。
21、renew签名证书及设备激活文档
从portal移除过期的签名证书
重新制作开发证书和发布证书
删除开发和部署所用的激活文档(provisioningprofiles)
使用新的证书重新制作用于开发和部署的Provisioningprofiles
从钥匙串中删除老的证书
在XcodeOrganizer中安装新的provisioning profiles
完成
以上就是iOS 开发百问(2)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

一年一度的WWDC已经结束,iOS18无疑是大家关注的一大焦点。目前有许多iPhone用户都抢先升级到了iOS18,但各种系统Bug让人难受。有博主表示,升级iOS18要谨慎,因为“Bug多到飞起”。博主表示,如果你的iPhone是主力机,建议不要升级iOS18,因为第一版本的Bug非常多。他还汇总了几个目前遇到的系统Bug:1、切换图标样式卡顿,导致图标不显示2、手电筒示宽动画经常丢失3、抖音App上传不了视频4、微信消息延迟10s左右推送5、电话偶尔打不出去,显示黑屏6、发热严

感谢网友吉茵珂丝、xxx_x、番茄炒西红柿、Terrence、香辣鸡腿堡的线索投递! 7月27日消息,苹果公司今天面向开发者,重新发布了iOS/iPadOS18Beta4更新,内部版本号从22A5316j升级到22A5316k,目前尚不清楚两个Beta4版本更新之间的区别。已经注册的开发者可以打开“设置”应用程序,进入“软件更新”部分,点击“测试版更新”选项,然后切换iOS18/iPadOS18开发者测试版设置来选择测试版。下载并安装测试版需要与开发者账户关联的AppleID。 7月24日报道,iO

7月31日消息,苹果公司昨日(7月30日)发布新闻稿,宣布推出新的开源Swift包(swift-homomorphic-encryption),用于在Swift编程语言中启用同态加密。注:同态加密(HomomorphicEncryption,HE)是指满足密文同态运算性质的加密算法,即数据经过同态加密之后,对密文进行特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算,实现数据的“可算不可见”。同态加密技术可以计算加密数据,而且不会向操作过程泄露底层的未加

更新:Saunders Tech 已将教程上传到他的 YouTube 频道(下面嵌入视频),解释如何在欧盟境外的 iPad 上安装 Fortnite 和 Epic Games Store。然而,该过程不仅需要特定的 iO 测试版

【点此直达升级教程】5月8日消息,苹果今日向iPhone用户推送了iOS17.5RC更新(内部版本号:21F79),本次更新距离上次发布隔了70天。如何升级iOS/iPadOS/watchOS/macOS开发版和公测版?升级iOS/iPadOS17开发者预览版和公测版,可参考家友分享经验:经验贴一||经验贴二||经验贴三||经验贴四。从iOS/iPadOS16.4开发者预览版Beta1开始,需要注册苹果开发者计划,注册后打开系统【设置】【软件更新】即可看到升级选项。需注意,你的iPhone或iP

6月1日消息,科技媒体AppleInsider今天发布博文,表示苹果将会在iOS18系统中,为“无边记”(Freeform)应用扩展推出“Scenes”的全新导航功能,并添加对象对齐的新选项。“无边记”应用简介先简要介绍下“无边记”应用,该应用于2022年推出,目前已经推出iOS、iPadOS、macOS15以及visionOS版本。苹果官方介绍如下:“无边记”是一款让灵感变为现实的绝佳工具。在支持几乎所有文件类型的灵活画布上勾勒项目草图、设计心情看板或者开始头脑风暴。借助iCloud,所有看板

感谢网友香辣鸡腿堡、软媒新友2092483、手写的从前、DingHao、小星_14、窝窝头吃大口、非影Q、软媒新友2168428、Slades、Aaron212、快乐小刺猬、小伯爵、吃鱼的小奶猫的线索投递!【点此直达升级教程】7月24日消息,苹果今日向iPhone和iPad用户推送了iOS/iPadOS18开发者预览版Beta4更新(内部版本号:22A5316j),本次更新距离上次发布隔了15天。Carplay壁纸苹果为CarPlay添加了壁纸,涵盖浅色和深色两种模式,其壁纸风格类似于iPhon

实用分享.......随着苹果不断推出新的iOS版本,许多iPhone用户都面临着是否应该升级系统的选择。而最新iOS17.5Beta3的发布引起了广泛关注,尤其对于iPhone12用户而言,是否应该放弃现有的iOS16,转而尝试新的Beta版本,成为了一个值得探讨的问题。基于实际体验,分析iPhone12升级至iOS17.5Beta3的利弊,为广大果粉们提供参考。首先,我们需要明确的是,Beta版本通常是给开发者或愿意承担一定风险的早期体验者使用的。这意味着,相较于正式版,Beta版本可能包含
