ios面试高频题(一)

这个时候又有不少学ios的朋友要开始找工作,我这里提供一些比较常见的面试题,供大家参考。

01、在iPhone应用中如何保存数据?

答:有以下几种保存机制:

1).通过web服务,保存在服务器上

2).通过NSCoder固化机制,将对象保存在文件中

3).通过SQlite或CoreData保存在文件数据库中


02、浅复制和深复制的区别?

答:浅层复制:只复制指向对象的指针,而不复制引用对象本身。

       深层复制:复制引用对象本身。

打个比方,假如我有个A对象,复制一份后得到A_copy对象,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,如果我们对A_copy执行了修改操作,那么A引用的对象同样也会被修改。深复制就好理解了,内存中存在了两份独立对象本身。


03、以下说法正确的是:(D)

A. 所有Objective-C类的最顶层的基类都是NSObject,否则无法编译通过

B. 在Objective-C中你不可能定义名叫id的变量

C. Xcode编译环境支持Objective-C和C语言,但是目前还不支持C++

D. 一个UIView中如果设定了背景颜色是黑色则不再可能让其透明


04、类别的作用?继承和类别在实现中有何区别?

答:类别主要有3个作用:

       1).将类的实现分散到多个不同文件或多个不同框架中。

       2).创建对私有方法的前向引用。

       3).向对象添加非正式协议。

继承可以增加,修改或者删除方法,并且可以增加属性。

category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,

只能添加,不能删除和修改,并且如果类别和原来类中的方法产生名称冲突,

则类别将覆盖原来的方法,因为类别具有更高的优先级。

 

05、类别和类扩展的区别。

答:category和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。

extensions可以认为是一个私有的Category。


06Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;

        Category是类别;重写一个类一般情况用分类好,用Category去重写类的方法,

        仅对本Category有效,不会影响到其他类与原有类的关系。

 

07#import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?

答:#import是Objective-C导入头文件的关键字,

      #include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,

       不会重复导入,相当于#include和#pragma once;

     @class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,

         可以解决头文件的相互包含;

     #import<>用来包含系统的头文件,#import””用来包含用户头文件。


08类NSObject的那些方法经常被使用?

答:NSObject是Objetive-C的基类,其由NSObject类及一系列协议构成。

      其中类方法alloc、class、 description 对象方法init、dealloc、–performSelector:withObject:afterDelay:等经常被使         用


09id 声明的对象有什么特性?

答:Id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象;

 

10原子(atomic)跟非原子(non-atomic)属性有什么区别?

答:1). atomic提供多线程安全。是防止在写未完成的时候被另外一个线程读取,造成数据错误

       2). non-atomic:在自己管理内存的环境中,解析的访问器保留并自动释放返回的值,

           如果指定了 nonatomic ,那么 访问器只是简单地返回这个值。





 












  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值