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.Object-...

iOS常见面试题总结

1.objective-c 常见面试题:  1、OC 语言的基本特点  OC 语言是 C 语言的一个超集,只是在 C 的基础之上加上了面向对象(oop) 的特性;  OC 与 Java 语言相同都是...

iOS常见面试题总结一

一.沙盒 沙盒本质上是一个文件夹,是iOS平台针对每一个安装的的应用在本地生成的一个文件夹,(沙盒文件夹的名字是随机产生的)应用只能访问自身的沙盒文件夹内的内容. 沙盒文件夹下包含三个文件夹:...

常见面试题整理--数据库篇(每位开发者必备)

常见面试题整理--数据库篇(每位开发者必备) 转载自:https://zhuanlan.zhihu.com/p/23713529        知乎专栏 继续前面有关于的Pytho...

java 常见面试题(含答案)

  • 2014年04月12日 23:23
  • 38KB
  • 下载

HTTP必知必会——常见面试题总结

1、常用的HTTP方法有哪些? GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器 POST: 用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用P...

JAVA、C、C++常见面试题汇总

  • 2012年08月22日 09:31
  • 123KB
  • 下载

常见面试题sql

  • 2017年04月13日 14:04
  • 716B
  • 下载

大数据常见面试题汇总(一)

大数据常见面试题汇总(一)
  • high2011
  • high2011
  • 2016年06月06日 13:47
  • 10559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS开发常见面试题
举报原因:
原因补充:

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