iOS 细节 问题
1.当一个空指针(nil pointer)调用了一个方法会发生什么?
安然无恙 —— 这是oc自带的消息机制,nil也能发送消息,而不会报错
2.为什么retainCount绝对不能用在发布的代码中?请给出两个相对独立的解释。
a,因为retainCount不靠谱,不能真实的反映一个对象的引用计数
b,使用 alloc release等东西,一一对应,不需要retainCount
c,app已然推荐ARC,连release都不用了,更何况retainCount
-retainCount受到时间和framework的影响太大,不能准确反映内存的引用计数
-retainCount很容易迷惑人,采取规范的内存管理才是王道
3.查找或者解决内存泄露的处理过程推荐
利用Xcode的工具,
Analyze来看各种提示信息 (你可以在building setting里面开启各种烦人的提示)
Profile跟进一些具体的内存的点
跟进具体的代码,来看一些关键的点 block、delegate等
使用instruments作为动态分析的手段,还有Xcode的静态内存分析
4.自动回收池(autorelease pool)在程序运行时的运作过程。
xcode为开发者写的代码外层包了一层NSAutoreleasePool。建立一个回收池堆栈(Stack)每次对象发送autorelease消息时,对象的引用计数并不真正变化,而是向pool中添加一条记录,记下对象的这种要求。最后当pool发送drain或release消息时,池中的所有对象的这种要求一一被执行。顺便说下使用场景:-应用不是基于"Application Kit",像"Command-line tool",因为它并没有内置的"autorelease pools"的支持。-创建线程,你必需在线程开始时创建一个'"Autorelease Pool"实例。反之,会造成内存池泄漏。一个循环内创建了太多的临时对象,你应该为他们创建一个"Autorelease Pool"对象,并在下次循环之前销毁它们。
5.处理属性申明的时候,原子(atomic)跟 非原子(non-atomic)属性有什么区别?
是否线程安全
atomic是原子的,多线程的时候,可以防止写操作完毕前被读取
事关多线程,原子(atomic)可以说是线程安全的,也就是在读取这个属性的变量的时候,会进行一些额外的操作(比如锁),所以说,atomic会比较安全但是比较耗时。
6.遍历一个NSArray和一个NSSet,哪一个更快?
其实意思是问,遍历一个链表和哈希表,哪个更快?
如果你只需要保存和遍历一些数据,或者元素个数比较小,就选择NSArray, 即使需要查找的功能,也不要用NSSet.
只有在元素个数很大,或者需要保证数据唯一性的情况下,才使用NSSet.
7。copy跟retain有什么区别?
一个是复制内容,一个引用计数+1,(NSString比较特殊,两个的功能几乎一样)需要注意的是,自定义的类需要重写一个方法以实现自己的深复制:
-(id)copyWithZone:(NSZone *)Zone{
grandSuper *scCopy;
scCopy = [[[self class] allocWithZone:Zone]init];
return scCopy;
}
8.frames跟bounds有哪些区别?
frame相对于superView而言
bounds相对于自身的origin而言,一般是(0,0),设备朝向变化,bounds会变
9.执行如下的代码会发生什么情况?
Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];
崩溃,因为重复释放,在自动回收池下一次进行回收时崩溃
10.app的崩溃率是多少?线上app出现问题如何解决:据说行业平均水平是 0.5%。分母是启动次数 (擦,这个我怎么知道,写得程序好,就崩得少,写的烂就崩的多呗,什么鸟崩溃率),刚得到一个 小的 方法:崩溃率的追踪用腾讯的bugly,解决用JSPatch。 好像有个 叫蒲公英的 网站 也可以 。
11.IDE(Integrated Development Environment,集成开发环境)。其缩写形式IDE同时也代指“电子集成驱动器”。IDE集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。该程序可以独立运行,也可以和其它程序并用。例如,BASIC语言在微软办公软件中可以使用,可以在微软Word文档中编写WordBasic程序。IDE为用户使用Visual Basic、Java和PowerBuilder等现代编程语言提供了方便。IDE多被用于开发HTML应用软件。
12.回滚
回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。
删除由一个或多个部分完成的事务执行的更新。为在应用程序、数据库或系统错误后还原数据库的完整性,需要使用回滚。 对于 iOS 系统的回滚 就是 从高版本的系统 刷机到低版本的系统的意思
待解决的:
在C语言中,你如何能用尽可能短的时间来倒转一个字符串?
解释代码签名(code signing)是如何运作的。
Objective-C中的posing指的是什么?
列举标准Xcode版本中的6个工具。
oc语言的缺点是什么
如何检测 一个 app在手机所占内存的 大小 ,查看 CPU的消耗情况,如何查看app消耗流量和电量的情况
iOS 细节 问题的更多相关文章
- iOS开发笔记7:Text、UI交互细节、两个动画效果等
Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...
- iOS推送服务细节回顾
iOS推送服务细节回顾 之前在做推送功能时候,就总结过一系列证书的制作,OC代码实现和服务器搭建等经验.又过了一段时间了,前前后后对推送服务做了多次的完善和优化,有iOS客户端的,还有本地服务器端的. ...
- 一起来给iOS 11找bug: 苹果还是乔布斯时代的细节控吗?
众所周知,前几天苹果在位于苹果公园的Steve Jobs剧院召开了一年一度的新品发布会,正式揭幕了全屏的iPhoneX, 随后又把iOS 11推送给了测试员(Beta Tester)(正式版将于几周后 ...
- iOS应用发布中的一些细节
iOS应用发布中的一些细节 前言 这几天最大的新闻我想就是巴黎恐怖袭击了,诶,博主每年跨年都那么虔诚地许下“希望世界和平”的愿望,想不到每年都无法实现,维护世界和平这么难,博主真是有心无力啊,其实芸芸 ...
- iOS开发笔记18:一些编译、开发调试、打包的细节整理
1.以链库的方式引用第三方库 一些特殊场景可能会要求使用链库的方式使用第三方库,大体设置如下: ①Other Linker Flags里进行设置,格式为-l+库名称 ②Libray Search Pa ...
- iOS 11 APP 设计中的几个 UI 设计细节
Apple 官网看了 iOS 11 的介绍,发现有不少的更新哦,比如控制中心.Siri.Live Photo 等等,总体来说都有很多不错的体验,不过本文不介绍功能,只说视觉界面. 在 iOS 11 的 ...
- iOS之应用发布中的一些细节
Bundle identifier Xcode中 Target -> General中的bundle identifier ; info.plist中的Bundle identifier; 证书 ...
- iOS $299刀企业证书申请的过程以及细节补充(二)
上篇博客写的过程中,没有图,也没有相应的说明.这次再补充一些信息: 1.从 https://developer.apple.com/ios/enroll/dunsLookupForm.action 申 ...
- iOS $299刀企业证书申请的过程以及细节补充
最近申请了iOS的 299刀企业证书,相关过程有些问题,分享出来,以便后来人参考. 申请的过程我主要参考了别人以前的文章,链接如下: 1.https://developer.apple.com/cn/ ...
随机推荐
- 20169210《Linux内核原理与分析》第十周作业
第一部分:实验 进程的调度时机与进程的切换 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已. 对于理解操作系统的工作机制 ...
- ueditor编辑器图片自定义存放目录及路径修改
百度编辑器ueditor功能强大,很多人士以应用项目开发中,但是里面有一个公众的问题就是上传图片存放目录太深,默认是ueditor/php/upload下,前不久测试后图片存放目录可以改变,但是路径会 ...
- boost库在工作(37)网络UDP服务端之七
前面介绍的都是网络TCP的服务器和客户端,其实还有UDP的服务器和客户端,同时也有同步和异步之分.UDP与TCP最大的区别,就是TCP是基于连接的,而UDP是无连接的.这里所谓的连接是指对方中断服务时 ...
- C#写的笔记管理软件
在VS2008中做的 附件:http://ys-e.ys168.com/2.0/276581430/j4G4J63367LMMJUJjsgW/CSHARP_WinCtrl21t_2014%E5%B9% ...
- disable_functions(禁用php函数)
我们怎么来设置php禁止运行的函数呢? 其实,我们可以在php.ini文件进行设置,如图
- 逻辑回归应用之Kaggle泰坦尼克之灾(转)
正文:14pt 代码:15px 1 初探数据 先看看我们的数据,长什么样吧.在Data下我们train.csv和test.csv两个文件,分别存着官方给的训练和测试数据. import pandas ...
- ThinkPHP的数据库访问的简单操作
传统的sql与ThinkPHP中的sql相比较 以user表为例 $user=M('user'); 1: SELECT * FROM user----------$user->select( ...
- WisDom.Net 框架设计(六) license
WisDom.Net-license 1.为啥要用license license (许可证) 顾名思义就是说我的软件只能给在指定的机器上使用.毕竟很多项目都不是免费的,(说句题外话,其实我用的也 ...
- Lucene.net项目研究说明
最近项目需要全文检索,所以找了几个开源的.NET检索项目,如:Lucene.net,Sphinx,Hubble.net.最后选择使用Lucene.ne来实现全文检索.至于原因嘛,可以参考下面几点: 1 ...
- 消息处理之EventBus ——使用篇
以前的几篇文章简单的介绍了一下UI线程和子线程之间的线程通信利器Handler,以及顺便介绍了一下SyncTask和HeadlerThread.这里介绍另一线程通信利器EventBus. EventB ...