iOS面试(10)

1、无法调试设备“Error launching remote program: failed to get the task forprocess 6405.”

ad-hoc Profile不支持调试。改为development profile。

2、OTA无法下载,提示“无法下载应用程序”

.plist文件中的 bundle-identifier写错了(或者包含中文字符),比如:

<key>bundle-identifier</key>

<string>com.xxx.--APN--</string>

其中的com.xxx.—APN—中包含中文(“--”),应改为英文。

或者签名证书是无效的。请在Orgnizer中检测签名证书。

3、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。

4、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];

}

5、RegexKitLite编译错误

编译时提示如下错误:

"_uregex_find", referenced from:       _rkl_search in RegexKitLite.o

……

在Build Settgins的Other Linke Flag中加入

-licucore

6、Archive时遇到“ResourceRules.plist:cannot read resources”错误

在build settings中找到Code Signing Resource Rules Path,填入$(SDKROOT)/ResourceRules.plist

7、使用ZombieEnable解决EXEC_BAD_EXCESS错误

这个错误是向一个release对象发送消息导致的。可以通过开启ZombieEnable参数来查找真正的问题。

Edit Scheme,选择Run …Debug,打开Arguments组,在Environment Variables中添加一个参数:

运行程序,当出现EXEC_BAD_EXCESS错误时,控制台中会输出具体出错的信息,比如:

*** -[ITSMTicketCell release]: message sent to deallocated instance0x897e920

直接指明了是由于某个对象在被释放之后,你发送了一条消息给它。

8、 关于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步的工作是无法生效的。

9、“Avalid provisioning profile for this device was not found.”

在你的开发证书中增加该设备的UDID。

10、将设备添加到 portal

连接设备,打开Orgnizer。在设备列表中选中设备,点击右边窗口左下角的“Add to Portal”按钮。或者在设备列的设备上右击,选择“AddDevice to Provisioning Portal”。

11、renew profile

打开Orgnizer,在LIBRARY中选择Provisioning Profiles。在右边窗口选择要renew的profile,点击右下角的“Refresh”按钮。输入Portal的密码,profile将被renew。

12、renew签名证书及设备激活文档

  • 从portal移除过期的签名证书
  • 重新制作开发证书和发布证书
  • 删除开发和部署所用的激活文档(provisioningprofiles)
  • 使用新的证书重新制作用于开发和部署的Provisioningprofiles
  • 从钥匙串中删除老的证书
  • 在XcodeOrganizer中安装新的provisioning profiles
  • 完成
时间: 2024-08-09 18:14:51

iOS面试(10)的相关文章

iOS面试

高德iOS面试整理(顺序有些乱,一面跪了) 1.简单自我介绍 2.聊c语言 3.两个数比较大小不用if和三目运算符 4.int转化为bit数组 5.多态和隐藏 6.const 和define区别 7.String类实现拷贝构造函数注意事项,是否有必要重写 数据结构 1.树层次遍历 2.链表删除 iOS 1.通知和delegate 2.ViewController 生命周期,  手动代码View添加 3.iOS 的click事件的响应过程 4.通知和KVO比较 5.ARC和非ARC (问到静态分析

iOS 面试问题的解答

关于一些 iOS 面试问题的解答 2015年04月26日 这篇 post 主要是对知乎上 iOS程序员的问题列表 的回答, 也算是对自己已有的知识进行整理. 如果你对本篇 post 中的回答有所疑问, 可以在下面留言. 如果有问题, 我一定会修改的 :-) 问题以及回答 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 iOS5 中引入的内存管理机制. Objective

C C++ OC iOS面试重点问题(一)

C C++ OC iOS面试重点问题(一) 1.字符串常量需要加\0 2.逻辑运算 位操作(经典:实现两个数的交换) 3.关键字 4.引用和指针的区别和联系 5.如何引用一个已经定义过的全局变量?  答:可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错. 5.extern关键字的用法? 答:ext

[转] 上级向的十个iOS面试问题

上级向的十个iOS面试问题 转自 http://onevcat.com/2013/04/ios-interview/ 不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会.对于iOS和Mac开发来说,因为本事还算比较新,企业对于这方面的开发者需求也比较大,所以面试时的要求可能并不是很高,一般能知道一些Cocoa和OC的基本知识也就认为可以了.但是对于一个希望拥有技术力基础的企业的iOS或者Ma

李洪强iOS面试一般性问题

iOS面试一般性问题,学会这些拿offer几率提升90%! 面试题中有一些一般性的问题,通常是会问到的.面试iOS应聘者时,切入点很重要,不同的切入点会导致不同的结果,没有找到合适的切入点也无法对应聘者有一个全面的了解.所以下面的面试问题更多的是提供方向,没有固定的答案,而且可以根据应聘者的回应引出更多有意思深层次的讨论. 注意:以下问题的参考答案均为笔者所答,不代表正确,问题答案因人而异,请根据自己的实际情况回答,若认为不合理,请在评论中指出.下面所有的参考答案,都是笔者站在面试官的角度来分析

ios 面试基础问题

转自http://www.jianshu.com/p/9c83145bb4ba iOS面试 字数2396 阅读2097 评论4 喜欢93 1.#import和#include的区别,@class代表什么? @class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import 而#import比起#include的好处就是不会引起重复包含 2.谈谈Object-C的内存管理方式及过程? 1.当你使用new,alloc和copy方法创建一个对象时,该对象的保留计数器

iOS 面试集锦2

4.写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy)NSString *name - (void) setName:(NSString*) str { [str retain]; [name release]; name = str; } - (void)setName:(NSString *)str { id t = [str copy]; [na

iOS 面试(高德)

高德iOS面试整理(顺序有些乱) 确实挺对不住面试官的,视频面试,我的这边始终没声音. 1. - (void)testFun { CGRect a ; //-.. } a的内存在堆上,还是栈上? 2.. 如何把一个 CGRect类型的数据放在堆上去? 你能够想到多少种方法? 3.  CGRect a ; [a retain]; 是否能通过编译 4.autorelease pool有用过吗? 对于auto release pool,同一个thread 可以存在多个auto release pool

IOS 面试问题总结

登录|注册     pingchangtan367的专栏 IOS面试问题总结 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题: 1.搞清楚touch事件的传递(事件的响应链) 事件的响应(responder chain) 只有继承了UIResponder的类才能响应touch事件,从上图的响应者链可以看出,优先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而下传递事件.直到单例UIWindow对象,最后是单例UIAp