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/ ...
随机推荐
- Java多线程小结
简述 Java是支持多线程编程的语言,线程相比于进程更加轻量级,线程共享相同的内存空间,但是拥有独立的栈.减少了进程建立.销毁的资源消耗.jdk1.5后对java的多线程编程提供了更完善的支持,使得j ...
- Flume 入门--几种不同的Sources
1.flume概念 flume是分布式的,可靠的,高可用的,用于对不同来源的大量的日志数据进行有效收集.聚集和移动,并以集中式的数据存储的系统. flume目前是apache的一个顶级项目. flum ...
- Android 系统名字、版本、API level的对应关系
从官网上找到的,具体地址是: http://source.android.com/source/build-numbers.html Code name Version API level Lolli ...
- [TypeScript] Installing TypeScript and Running the TypeScript Compiler (tsc)
This lesson shows you how to install TypeScript and run the TypeScript compiler against a .ts file f ...
- request对象
Servlet三大域对象的应用 request.session.application(ServletContext) 请求转发器: public void doGet(HttpServletRequ ...
- 聊聊 KVC 和 KVO 的高阶应用
KVC, KVO 作为一种魔法贯穿日常Cocoa开发,笔者原先是准备写一篇对其的全面总结,可网络上对其的表面介绍已经够多了,除去基本层面的使用,笔者跟大家谈下平常在网络上没有提及的KVC, KVO进阶 ...
- ASP.NET中如何实现负载均衡
ASP.NET站点中做负载均衡: 基于HTTP协议我们可能发现我们要解决两点问题: 第一,做到负载均衡,我们需要一个负载均衡器. 可以通过DNS轮询来做,在DNS服务器上配置为每次对我们做负载均衡的同 ...
- linux lsof nmap netstat
lsof -i :22 # 显示22端口当前运行的程序 lsof -c ssh # 显示ssh进程打开的文件 lsof -p 2120 #显示进程id2120打开的文件 nmap -sP ...
- HttpWebRequest结合HtmlAgilityPack实现网页form提交
年前一个项目,需要在某个系统实现系统自动操作. 系统页面使用form提交,页面参数较多,也参数设计一系列计算逻辑,改动一个值,其他值自动改变. 传统方法使用正则表达式匹配参数,构建post参数进行请求 ...
- (转) Spring读书笔记-----Spring的Bean之配置依赖
前一篇博客介绍了Spring中的Bean的基本概念和作用域(Spring读书笔记-----Spring的Bean之Bean的基本概念),现在介绍Spring Bean的基本配置. 从开始我们知道Jav ...