【第22期】观点:IT 行业加班,到底有没有价值?

IOS开发常见面试题

转载 2015年07月10日 22:57:44

1.解释一下OC中的运行时。
1>runtime是什么:
runtime是一套比较底层的C语言API,属于1个C语言库,包含了很多底层的C语言API;平时编写OC代码,在程序运行过程中,其实最终都转换成了runtime的C语言代码,runtime是OC的幕后工作者。
2>代码举例:
OC:

[[Person alloc] init]

runtime:

objc_msgSend(objc_msgSend("person","alloc"),"init");

3>怎么用:
runtime属于OC的底层,可以进行一些非常底层的操作(用OC无法实现或者不好实现);在程序运行过程中,动态创建一个类(比如KVO的底层实现);在程序运行过程中,动态的添加一个类的属性或方法,修改属性或方法;遍历一个类的所有成员变量或属性或方法。
a.相关的头问价和函数
头文件:
*

#import "ClassName.h"
@interface ClassName ( CategoryName ) 
// method declarations 
@end

不过到现在为止,Category这个名字看起来仍然让人摸不着头脑——Category的中文是分类和范畴的意思——即便这个动态机制很强大,跟分类有什么关系呢?

这是因为利用这个机制,程序员可以把一堆方法分门别类,分成若干组,每组方法用一个Category名字加以命名,定义在同一个文件里。这个就是为什么把这个机制叫做Category的原因。

注意Category只能用于方法,不能用于成员变量。

理解了Category,Extension就不难理解了。Extension是Category的一个特例,其名字为匿名(为空),并且新添加的方法一定要予以实现。(Category没有这个限制)

6.利用[UIImage imageNamed:@”icon.png”]存在的问题
利用这种方法在application bundle的顶层文件夹寻找由供应的名字的图像。
如果找到图片,装载到iphone系统的缓存中,此时就意味着图片是放在内存里作为cache的。因此如果图片资源多了或者大了,此方式容易引起内存警告从而导致程序自动退出的问题。
我们可以通过直接读取文件路径[UIImage imageWithContentsOfFile]来解决这个问题,应用示例:
NSString *path = [[NSBundle mainBundle] pathForResource:@”icon” ofType:@”png”];
myImage = [UIImage imageWithContentsOfFiles:path];
注意:imageNamed方法是不能通过路径进行加载图片的,如果通过路径加载图片可以通过下面两个方法加载,一个是URL一个是FilePath
NSImage image = [[NSImage alloc] initWithContentOfURL:(NSURL )];
NSImage image = [[NSImage alloc] initWithContentOfFile:(NSString )];
用完以后[image release];

7.说说进程和线程的区别和联系,ios中有几种实现线程的方法,它们之间有什么区别?
进程是对正在运行的程序过程的抽象,程序本身就代表着一个进程。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程是程序运行的基本单元(可以理解为一个进程中执行的代码片段),进程可以认为是一个容器,里面装的线程真正的在执行代码,完成功能。一个程序在运行的时候就是一个进程,一个进程中至少有一个线程。
ios中线程的实现有三种方式:苹果自带的NSThread、NSOperationQueue、GCD。
使用线程的好处:
a.使用线程可以把程序中占据时间长的任务放到子线程中去处理,如图片、视频的下载。
b.发挥多核处理器的优势,并发让系统运行的更流畅,用户体验更好。
使用线程的缺点:
a.更多地线程需要更多地内存空间。
b.当多个线程对同一资源出现争夺的时候要注意线程安全的问题。

举报

相关文章推荐

iOS基础面试题 集锦

iOS基础面试题(一) 项目流程: 项目的具体流程,技术点在流程中哪些地方使用。(这个问题的问到的几率很高!) 项目的具体流程: (1)可行性分析:这个一般都是做战略的专家来做的,他们更加有市...
  • xlsn0w
  • xlsn0w
  • 2016-01-15 21:44
  • 1752

iOS开发中常用第三方库的使用和配置-ASIHttpRequest

[size=medium] 所用xcode版本号: 4.6.3 2. httpRequest-ASIHttpRequest ASIHttpRequest-api很好的一个参考网站:http://www.dreamingwish.com/dream-2011/apples-third-par...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

一些常用的软件开发文档分享给大家

Android 3、最新android ADT-21.1.0 4、Android开发精典案例60个【源码】 5、安卓开发必学书籍(30本合集) 6、Android经典源码全集[简单易懂] 7...

iOS开发中常用第三方库的使用和配置-GDataXML

[size=medium] 这篇文章旨在给自己以后需要时能及时的查到,省得每次都去baidu. 1. xml解析库-GDataXML 参考文章:http://blog.csdn.net/tangren03/article/details/7868246 GDataXML下载地址: (1...

iOS开发工程师常见面试题及答案

1.申请后台运行除了后台刷新和VoIP及音乐播放和定位之外还有什么办法?    答案:UIBackgroundTaskIdentifier 2.使用GCD在当前代码中加入几个NSLog打印...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)