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

崩溃,因为重复释放,在自动回收池下一次进行回收时崩溃

待解决的:

在C语言中,你如何能用尽可能短的时间来倒转一个字符串?

解释代码签名(code signing)是如何运作的。

Objective-C中的posing指的是什么?

列举标准Xcode版本中的6个工具。

oc语言的缺点是什么

时间: 2024-10-10 21:20:23

iOS 细节 问题的相关文章

iOS 8 应用构建细节挖掘 之 应用启动流程

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 24K 标题党! 不过内容绝对够细节而全面,仅针对启动流程这一小块块哟! iOS 应用启动流程,这个话题早在09年就非常熟悉,然而时隔多年,不知是

iOS开发笔记7:Text、UI交互细节、两个动画效果等

Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中遇到的一些细节问题,包括Masonry部分的问题. 动画介绍最近用到的两个,算是常用级别的,动画这部分之后会专门研究总结下. 最后介绍两个工具及三个Xcode使用设置的问题. 1.Text (1)UILabel显示多行文字并且文字置顶显示 不限制UILabel的高度(宽度需要设置,确定文字何时换行)

iOS 11 APP 设计中的几个 UI 设计细节

Apple 官网看了 iOS 11 的介绍,发现有不少的更新哦,比如控制中心.Siri.Live Photo 等等,总体来说都有很多不错的体验,不过本文不介绍功能,只说视觉界面. 在 iOS 11 的新 UI 界面中,重大更新的界面主要有 App Store,所以我从应用商店的UI设计也能看出一些大概细节. 图标:从线性改为面形 新版 Store 的图标从线性改为面形,图标也加入了圆角,看起来更加圆滑,同时和 iOS 10中的 iTunes 相关应用风格也统一了. Icon 颜色比如来的线性浅了

iOS开发项目篇—43子控件的细节处理

iOS开发项目篇—43子控件的细节处理 一.升级UI 把之前的UI图片删除,换上新的图片(图片命名一致,规范)没有其他的影响. 删除之后,添加. 替换之后,做一次clear操作. 建议把沙盒中的包删除,删除之后再做一次clear操作. 二.调整转发(模块) 1.设置背景(使用提供的素材图片进行平铺) 为转发微博部分设置背景,考虑到这个部分整体上是一个UIView,可以尝试以下设置. 第一种尝试: 但是这样设置,因为图片是平铺的,所以整个背景会出现线条效果,影响显示,不可行. 第二种尝试: 注意:

iOS开发项目篇—41cell的frame的细节处理

iOS开发项目篇—41cell的frame的细节处理 一.简单说明 在首页控制器中使用自定义的UITableViewcell 代码如下: YYHomeTableViewController.m文件 1 // 2 // YYHomeTableViewController.m 3 // 4 5 #import "YYHomeTableViewController.h" 6 #import "YYOneViewController.h" 7 #import "Y

关于ios下字体描边的一个细节

转载请注明,来自:http://blog.csdn.net/skyman_2001 CGContextSetTextDrawingMode(context, kCGTextStroke); CGContextSetRGBStrokeColor(context, pInfo->strokeColorR, pInfo->strokeColorG, pInfo->strokeColorB, 1); CGContextSetLineWidth(context, pInfo->strokeS

2015/10/6 iOS 笔记 细节 应用中常见文件

1,工程名-info.plist文件 bundle display name 应用显示的名称(10到12个字符,超过显示...) bundle identifier  应用的唯一标识 com.xx.hhxx bundle version 软件版本号 supported interface orientation 屏幕旋转 默认支持三种模式 2,应用中常见文件 工程名-Prefix.pch (新版没有这个文件了) pch头文件的内容能被项目中得其他所有源文件共享和访问 一般在pch头文件中定义一些

IOS之UI -- 按钮UIButton的细节

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

iOS 开发中弄不清楚的小细节之数组 ——array == nil 和 [array count] == 0区别

很多时候我们开发者往往对一些比较难的技术点相对要熟悉一些,而对一些细节或者说感觉比较简单的问题总是弄不清楚,而数组的判断首当其冲. 我们在做开发的时候,需要数据,可是很多时候从服务器下发的数据都是JSon格式,当中会有数组的存在,那么开发中会出现一部分的数组中没有元素,这个时候,我们会习惯的用是不是为空来判断.例如: 但是我们会发现,不起作用,如过为空的时候会报这样的错误: 如果我们改动一下就会ok了.怎么改呢,就是在判断的时候改成arr.count!=0,这句话的意思就是说数组中的元素个数部位