1 问:手机屏幕分辨率是如何确定的? 
答:屏幕分辨率分为点以及像素两种。Iphone4中是320*480点。但是其像素的缩放比例是2x。因此其像素分辨率是640*960。 
2  问:+号定义的方法和-号定义的方法有什么区别? 
答:(1)+号表示类的方法或者静态方法,-号表示实例的方法。 
        (2)类的方法在类中可以直接引用,实例的方法必须经过实例化之后才能引用。 
3  问:IOS的架构层共有几层?分别是哪几层? 
答: 共分为四层,分别是coco Touch层 多媒体层 核心服务层  核心OS层 
4  问:IOS中定义的实例变量可以在其它类中使用吗? 
答:IOS中定义的实例变量一般是私有的,只能本类调用。不能在其它类中使用。 
5  问:#import和#include有什么区别? 
答: 在c语言中采用#include包含头文件,在OC中使用#import包含头文件。相比于#include来说,#import可以有效的防止头文件的重复引用。 
6  问:什么是MVC? 
答:  MVC :模型视图 控制器。模型表明你的程序是什么,实现了什么功能,完成了哪些工作。视图表明用户所看到的视图。控制器表明如何将你所做的展示给用户。三者是紧密联系不可分割的。M可以与C交互,但M不能直接与V交互。M与C之间可以通过API、KVO等多种方式交互。C与V之间可以通过outlet、action等实现交互。所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据。 
•  Controller可以直接和Model通信 
•  Controller也可以直接和View通信 
•  Model和View永远不能直接通信 
•  iOS中View和Controller的通信是透明和固定的,主要通过outlet和action实现 
•  View使用Delegate接口和Controller同步信息 
•  View不直接和数据通信,使用dataSource接口从Controller处获取数据 
•  View的delegate和dataSource一般就是Controller 
•  Controller负责为View翻译和格式化Model的数据 
•  Model使用Notification & KVO的方式分发数据更新信息,Controller可以有选择的监听自己感兴趣的信息。 
•  View可以监听广播信息,但一般不是Model发出的信息 
一个完整的App就是很多MVC的集合 
7  问:KVO与KVC的含义与区别? 
答:KVO:Key-ValueObserving可以简单的理解为监听某一个已注册的关键词,通过观察这个关键词的变化来实现某些具体的功能。 
KVC: 
8  问:nil Nil null的区别? 
答:  nil指向oc的对象,Nil指向OC的类,null可以指向任何类型,一般在c语言中使用。 
9  问:什么是多继承?c、c++、oc中有多继承吗? 
多继承是指一个类具有多个父类的情况。c和oc中没有多继承的概念。c++中有多继承的概念。oc中多重继承是用protocol 委托代理来实现的。 
10 问: OC中如何进行内存管理? 
答:  OC中目前多使用的是ARC(自动引用计数的内存管理模式)。采用这种模式不用手动的保留、释放所创建的内存。当引用计数值为0的时候,相应的内存被释放掉。 
11 问:self和super的区别? 
答: self有点像c++中的this,super类似于c++中父类进行调用。在实际使用中,self一般指向当前调用方法的类。Super调用方法的时候,一般是为了告诉编译器,这个所调用的方法是父类的方法,而非本类中的方法。 
 
答: xcode下经常使用的文件类型有:.c.h .m .mm .cpp .hpp .o等。其中.c文件支持c语言,.h文件可以是c、c++、oc的头文件,.m支持c、oc,.mm支持c、c++、oc。.cpp支持c++语言。.hpp可以看作是c++的原文件与头文件混编得到的。.o是xcode下的编译文件。 
 
15  问:ios中能否使用静态库或者动态库? 
 
答:  apple禁止iphone使用动态链接库,但可以使用静态链接库。可以通过Cocoa TouchStatic Library编译静态链接库。也可以通过makefile编译声称libxxx.a的静态链接库文件来使用。 
 
16  问:对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象? 
 
答:编译时是NSString的类型;运行时是NSData类型的对象。 
 
答: @package 类似C语言中变量和函数的私有扩展。一般最长用于框架类的实例变量。使用@private太限制,使用@protected或者@public又太开放。 
 
@public可以被该类以及其它类直接调用。@private可以在该类中使用,但不能在其子类中使用。@protected可以在该类以及此类的子类中使用。对于64位图像,这样的成员变量可以在实现这个类的图像中随意访问。 
 
18  问:#define声明一个常数,用以表明1年中有多少秒 
 
答: #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 
 
19  问:进程与线程的区别和联系? 
 
答: 进程和线程都是操作系统中程序运行的基本单元。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。 
 
20  问:堆和栈的区别 
 
答: 1.申请大小:栈的大小一般是固定的,如windowns中一般是1、2M左右。 
 
堆的存储空间是不连续的,大小上较为灵活。 
 
2 分配方式:堆都是动态分配的,必须手动释放。栈有静态分配和动态分配两种。由编译器控制。 
 
栈先进后出,效率较高。 
 
21  问:ststic关键词的作用 
 
答: 在函数体内定义的static变量的作用范围为该函数体。仅分配一次内存空间。相比较于auto变量来说,auto变量每次运行到auto变量的时候才进行内存分配,当程序不再需要这个变量的时候立即释放掉。在模块内的 static 函数只可被这一模块内的其它函数调用。在类中的 static 成员变量、函数属于整个类所拥有。 
 
22  问:oc的优缺点 
 
答:  objc优点:  
 
1)  Cateogies 2)Posing 3)动态识别 4)指标计算 5)弹性讯息传递 6) 不是一个过度复杂的 C 衍生语言 7) Objective-C 与 C++ 可混合编程  
 
2)  objc缺点: 
 
1)  不支援命名空间 2)  不支持运算符重载 3) 不支持多重继承  
 
23  问:深拷贝和浅拷贝的区别? 
 
答:  浅拷贝是指新建一个新的指针,用于指向已经存在的内存空间。浅拷贝执行完之后,指针增加了一个,内存空间并没有增加。深拷贝是指开辟了一个新的内存空间指向这个新的内存空间。浅拷贝容易发生内存反复释放的错误。 
 
24  问:如果不想修改原始的类,而又不使用子类,那么如何增加在类中增加一个新的方法呢? 
 
答:  在OC中提供了一个新的手段来实现这个功能。OC中可以采用分类的方法来实现。例如 
 
SomeClass.h 
 
@interface SomeClass : NSObject{ 
 
} 
 
-(void) print; 
 
@end  
 
分类的做法 
 
@interface SomeClass (Hello) 
 
-(void)hello; 
 
@end 
 
分类只能添加方法而不能添加实例变量。(hello为分类的名称)当然后面还要添加implementation 
 
Extension(类扩展)是Category。Extension是Category的一个特例,其名字为匿名(为空),并且新添加的方法一定要予以实现。(Category没有这个限制)。 
 
25  问:ViewController的 didReceiveMemoryWarning如何被调用? 
 
答:  当ViewController收到内存不足的警告时会调用viewDidUnload方法。[supper didReceiveMemoryWarning]; 将viewController的view的所有subView移除,将view本身释放。 
 
26  问:delegate委托和protocol协议 
 
委托指明对象是当前方法的接受者。 
 
A中有一个方法fun1,B想访问A中的方法。那么A和B可以约束一个共同的规则,将fun1放到协议中,那么B在访问A的时候就不必通过A来访问,可以利用委托的方式,访问协议中的fun1。 
 
人们经常将委托与协议来一起使用,其实委托可以单独使用。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
 
 |   
        
 
    
    
    
     
 
 |