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/ ...
随机推荐
- 食品药检所LIMS需求分析说明书
1.XX市食品药检所LIMS系统需求分析... 5 1.1检验业务流程... 5 1.1.1样品受理... 5 1.1.1.1选择受理任务... 5 1.1.1.2录入检品信息... 5 1.1.1. ...
- [置顶] sqlplus 使用笔记
关于sqlplus常用命令的一些记录 这两天去参加了一个关于orcale 12C release1的技术交流会,主要关注的是orcale Spatial 在12C上面的一些新的变化,一起交流的有学校的 ...
- 蜗牛—JSP学习之JavaBean初识
初识: <%@ page language="java" import="java.util.*" pageEncoding="utf-8&qu ...
- [置顶] sql 向另一个表导数据
1.如果目的表已经存在: 这两个表结构必须一致 insert into table1 select * from tabel2 2.如果目的表不存在: 这个类似与克隆表 select * into t ...
- [AngularJS] Extract predicate methods into filters for ng-if and ng-show
Leaking logic in controllers is not an option, filters are a way to refactor your code and are compa ...
- Java数据库连接代码集合(转)
Java数据库连接接口(JDBC)是Java里定义的一套用于数据库连接和操作的API的集合.有不同的数据库厂商提供这套接口的实现类,对于 Java程序员来说,程序员不需要关心数据库的底层的实现,统一的 ...
- 【转】cocos2d-x游戏开发(八)各类构造器
欢迎转载:http://blog.csdn.net/fylz1125/article/details/8521997 这篇写cocos2d-x的构造器. cocos2d-x引入自动释放机制后,创建的对 ...
- android开发之使用拼音搜索汉字
国庆回了趟家,昨天真不想走,离家近的感觉太好.唉,不扯这些,说说今天的正事吧. 上篇博客中介绍了自定义AutoCompleteTextView ,但是用到了一个很蹩脚的技术,就是我们事先把每个汉字的拼 ...
- NDK开发之日志打印
要在NDK中打印日志,只需要以下三步: 一.在Android.mk中添加以下内容: LOCAL_LDLIBS := -lm -llog 或者 LOCAL_LDLIBS:=-L$(SYSROOT)/us ...
- Android开发之设定Dialog的位置
今天自定义了一个对话框,但是弹出时默认是显示在屏幕中间.主要代码:menuDialog = new AlertDialog.Builder(this).create(); ...