博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS面试题--002
阅读量:5340 次
发布时间:2019-06-15

本文共 2234 字,大约阅读时间需要 7 分钟。

1、        写出方法获取ios内存使用情况。

 

:使用Xcode内嵌的instruments软件

 

2、        深拷贝和浅拷贝的理解?

参见本博客

3、        怎样实现一个singleton的类。

.h文件

@interface Singleton : NSObject

@property(nonatomic,assign)int a;

+(Singleton *)shareSingleton;

.m文件

@implementation       Singleton

static Singleton *instance = nil;

+(Singleton *)shareSingleton

{

             @synchronized(self){

if(instance != nil){

             returnself;

}

             instance= [[Singleton alloc] init];

}

return instance;

} 另外可以使用GCDonce模式

4、        什么是安全释放?

先释放. 再将对象的指针置为nil,

 

5、        RunLoop是什么?

运行循环.(不停的循环)

每个线程,包括程序的主线程(main thread)都有与之相应的run loop对象。

在任何一个Cocoa程序的线程中,都可以通过:

NSRunLoop   *runloop =[NSRunLoopcurrentRunLoop];获得当前的runloop对象.

主线程的run loop默认是启动的。

子线程中如果没有开启runloop,在子线程中设定NSTimer,只会执行一次.因为子线程的runloop没有打开.

在子线程的事件监听包括通知,按钮点击,也不执行

6、        什么是序列化和反序列化,可以用来做什么?如何在OC中实现复杂对象的存储?

什么是序列化与反序列化???归档和反归档.转化为NSDATA

序列化和反序列化,我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。

 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。

  把对象转换为字节序列的过程称为对象的序列化。
  把字节序列恢复为对象的过程称为对象的反序列化。

7、        写一个标准宏MIN,这个宏输入两个参数并返回较小的一个?

#defineMIN(A,B) ((A) <= (B) (A) : (B))                     

8、        iphone os有没有垃圾回收机制?简单阐述一下OC内存管理。

没有垃圾回收体制.mac OS有垃圾回收体制.

1:对你自己拥有的对象负责.你只能释放你拥有的对象.

2:凡是你通过retain,alloc,copy等手段获得了所有权的对象,都必须在你不再使用它的时候,,由你来调用release,autorelease等手段来释放对它的所有权.

3:在一定的代码段内,对同一个对象所作的copy,allocretain的次数应该与autoreleaserelease的次数相等;

4:可以在dealloc的方法中释放你所占有的实例变量.

5:对于便利构造器和访问器来说,你没有通过上述的手段获得对象的所有权,因此在这些情况下你无须对获得的对象进行额外的释放操作.

6:autorelease只不过意味着预定延迟发送一条release信息.当前的引用计数并没有变.

 

9、        简述应用程序按Home键进入后台时的生命周期,以及从后台回到前台时的生命周期?

  

              -(void)applicationWillResignActive:(UIApplication*)application

      -(void)applicationDidEnterBackground:(UIApplication *)application

      后者进行的方法有

       -(void)applicationWillEnterForeground:(UIApplication *)application

      - (void)applicationWillBecomeActive:(UIApplication*)application

10、     ViewController allocloadView,viewDidLoad,viewWillAppear,viewDidUnload,deallocinit分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?

Alloc 申请内存空间的时候调用.

 

Init视图初始化的时候,赋一些程序的初始值

 

LoadView加载视图的时候调用  self.view != nil的时候,执行loadview,加载一些自己的视图

 

ViewDidLoad视图已经加载的时候调用(网络数据之类的,刷新表之类)(添加通知)

 

ViewWillAppear视图将要出现的时候

 

ViewDidUnload视图已经卸载(数据释放掉)(移除通知)

 

Dealloc视图已经销毁的时候(self.view = =nil)自己拥有的实例变量释放掉

 

 

 

转载于:https://www.cnblogs.com/xukunhenwuliao/p/3576188.html

你可能感兴趣的文章
malloc() & free()
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>
jQuery上传插件Uploadify 3.2在.NET下的详细例子
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>