1.RunLoop是什么?
一个RunLoop就是一个时间处理的循环,用来不停的调度工作以及处理输入时间。使用runloop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。runloop的设计是为了减少cpu无谓的空转
2.什么是序列化和反序列化,可以用来做什么?如何在OC中实现复杂对象的存储?
如果你需要存储一个复杂的对象的话,经常要以二进制的方法序列化这个对象,这个过程叫Archiving。如果一个对象需要进行序列化,那么需要遵循NScoding协议,主要有两个方法:
-(id)initWithCoder:(NSCoder*)coder;//从coder中读取数据,保存到相应变量中,即反序列化数据。
-(void)encodeWithCoder:(NSCoder*)coder;//读取实例变量,并把这些数据写到coder中去,即序列化数据。
3.写一个标准宏MIN,这个宏输入两个参数并返回较小的一个?
#define kMIN(X,Y) ((X) > (Y)) ? (Y) :(X)
4.iphoneos有没有垃圾回收机制?简单阐述一下OC内存管理。
iphone os没有垃圾回收机制。
垃圾回收机制用于在空闲时间以不定时的方式动态的回收无任何引用的对象占据的内存空间。
简述oc:
1:对你自己拥有的对象负责.你只能释放你拥有的对象.
2:凡是你通过retain,alloc,copy等手段获得了所有权的对象,都必须在你不再使用它的时候,,由你来调用release,autorelease等手段来释放对它的所有权.
3:在一定的代码段内,对同一个对象所作的copy,alloc和retain的次数应该与autorelease及release的次数相等;
4:可以在dealloc的方法中释放你所占有的实例变量.
5:对于便利构造器和访问器来说,你没有通过上述的手段获得对象的所有权,因此在这些情况下你无须对获得的对象进行额外的释放操作.
6:autorelease只不过意味着预定延迟发送一条release信息.当前的引用计数并没有变.
5.简述应用程序按Home键进入后台时的生命周期,以及从后台回到前台时的生命周期?
-(void)applicationWillResignActive:(UIApplication*)application
-(void)applicationDidEnterBackground:(UIApplication *)application
后者进行的方法有
-(void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationWillBecomeActive:(UIApplication*)application