OC 面试题目汇集

OC 问题集中: 

  1. 君如何理解 iOS 内存管理
       1. new alloc copy retain这些目标我们还设知难而进的release或者
    autorelease
       2. 假设是接近方式创建的靶子,那么网自动释放池自动在适度的 时候会拉扯咱
    release
       3. ARC xcode 自行会帮助我们人工智能的长 release autorelease 操 作 

  2. C语言里的数组与OC数组的区别
    OC 数组是一个靶,有大量之不二法门,c 没有还待自己写 C
    数组删除是需要后面往前方走,oc 数组自动处理 

  3. 浅拷贝与深拷贝的界别 或者什么是深拷贝
    什么是浅拷贝

 copy, mutableCopy
@interface A { 

B *b; } 

浅拷贝只是拷贝对象自我,不见面针对中间的分对象进一步拷贝 

 深拷贝会对子对象以及子对象的道岔对象进一步拷贝

 4. 类的打算

 类别是给就有些类添加方法,但是未能够填补加变量,匿名类别除外 () 

  1. 品类和后续什么区别
    种/类目/Category 很方便为现有类添加方法。但是未可知补充加成
    员变量,匿名类除外,比如可以于 NSString 增加方法,给 UINavigationBar
    增加方法,比如 SDWebImage 给 UIImageView 增 加了
    setImageWithURL:方法。类别对于使用者很方便 

延续可以为现有的好像增加方法及成员变量。继承对于使用者来 说勿若类别方便
,比如对准 SDWebImage 如果就此持续的话,那么即便 需要写一个看似于 QFImageView
然后将有的 UIImageView 改成为 

QFImageView,这里与其说类别方便 

  1. C 和 OC 有什么基本数据类 

C char, short, int, struct, union, enum 

NSString, nsarray, nsdictionary. 

  1. 代办和商事什么区别 

代理是一致种概念,协议是平等种技术,代理是用协议来贯彻的,代理 是 2
独对象期间通讯的同样栽方法。
代理主要做反而为传值的。实现系统的片回调方法,比如 scrollview
滑动事件,选择像,asi 网络下载好等。 

iOS 开发和 objective-c 区别

  1. 代理和通知中心/广播/NoficationCenter
    什么分别 

代办要是倒转为传值,一般用来 1:1 的点滴只对象通讯及。 

照会中心凡是透过挂号然后收事件之同一栽 n:n(多针对性针对) 的不二法门 

 

  1. 解释 const, static, inline
    关键字
    const 修饰指针,或者常量,比如不可变,
    static 修饰变量表示作用域,比如全局的个体变量,函数内部的 static
    是里的私变量。
    Static 修饰函数表示函数是文件作用域
    Inline 代表内联。一般的话 inline 需要以及 static 联合用 一般用法是 static
    inline int max(int a, int b) { 

return a>b?a:b; } 

static inline作用是与宏类似,只不过是便宜调试(宏不能够断掉调 试,static
inline 可以)。运行时候是同的。
诚如 c/c++短小的函数都因此 static inline 内联函数 

  1. OC 里怎么落实多随着承 

OC 没有多延续。用协议落实多延续,把协商被的法以促成的类 中重复写
C++有多继承,多延续其实用好了非常有益于。C++多继承很轻并发 二一性比如: 

类 A { int a;}
类B: 类A,类C:类A
类D : B, C那么 int a到底是继续自谁之 单继承 

11.解释KVC和KVO
Key value coding, Key value observer.
Kvc 是途径访问的专业,kvo 是观某个变量的变迁历程
KVO 可以洞察某个对象的变量变化历程,KVC 是满足于考察的编 码规范。
KVC/KVO 类似于代理,通知中心。都是如出一辙种简报方式。 

  1. 哟是单例模式 

单例就是于差不多独对象中共享数据,类似于全局变量,比如数据
库打开一浅,多单界面都得以利用 

  1. NSString *name =
    @”1000phone.com”,[name release]会面油然而生啊 情况 

其一代码不饱 objective-c 的内存管理黄金法则。没有 alloc 就 

release,

  1. 历数所知晓的 iOS 的类
  2. C/C++和 OC 怎么混用 

.m -> .mm 

  1. 地方存储方来哇几种植 

数据库,nsuserdefauts, file , plist,archieve 归档 比较粗的就坐落
nsuserdefaults(以文件设计之寄放于 Libraray 中)
数据库中适合存放一修一条的记录
file 一般存普通文书,图片,视频,音频等
plist 存放比 nsuserdefaults 大片段之
由档 nsarchieve 可以存对象 

17.解释OC里的id类型
id 是泛型指针,可以本着任何 oc 类型,
id =~ NSObject *
id 是 objc_object 的 typedef,执行 Class 对象 

  1. retain、copy、readonly、readwrite
    的区别
    retain对计数器+1 copy是开创一个新目标,readonly只发getter
    函数,readwrite 产生 setter, getter 函数 

  2. copy 是深拷贝还是浅拷贝
    copy 缺省凡浅拷贝.但是 copy 也可做成深拷贝 

  3. copy 和 mutableCopy 区别
    copy 是拷贝,mutableCopy 是不过易拷贝,比如把 NSString 通过 mutableCopy 变
    成 NSMutableString, 把 NSArray 通 过 mutableCopy 变成 NSMutableArray.
    NSString -àNSMutableString, NSArrayàNSMutableArray, 

NSDictionaryàNSMutableDictionary, NSData->NSMutableData; 

  1. 怎落实目标的本地存储 

归档 NSArchieve

  1. 遍历数组的老三种方法来啊界别
    for forin iterator
    forin 也深受飞循环。为什么他叫快快循环,原因是快快?为什 

呢速度快? 可以经过优化提前把 forin 里面的 array 数组数组全部 

导入到 cpu cache 中。因为 cache 访问速度把内存快至少 100 倍 

  1. NSArray, NSDictionary
    这些是何等做的? 

NSArray 用链表做的 

NSDictionary 以 hash 表做出来的

 24. C++怎么调用 C 的法子 

extern “C” int foo(){ }; 

  1. Blocks 语法有啊长处
    Blocks 类似于 c 中回调函数,和代办类似的,类似于 java 中的 listener
    匿名函数
  2. 啊是托代理模式 

信托代理是 2 独对象中的相同栽简报方式。一着下协议,代理 

另外一在实现协议,类似于回调,blocks 等语法。 目的凡以软件设计的低耦合 

  1. 嗬是通中心 

通告中心凡是基本上针对性大多之一致的通讯模式。主要用当差不多个对象之间松
耦合的简报模式。对象与目标期间通过通告之名就可以拓展关 联通讯。 

28.解释重大字static、const、inline、
static inline、volatile 

static 修饰变量表示静态变量,根据作用域 不同
extern 和 static 是倒转的。
Static 修饰函数是意味着函数在本文件中 

Static inline 联合在一起表示内联函数。类似于宏
Const 修饰变量和变量的情节仅读
Volatile 表示每次都于内存中确确实实的读取。主要是用于嵌入式中, 读取硬件。 

  1. OC 中生私出措施呢?怎么落实
    在.m 文件中实现 Category,只是以.m 中方法 

  2. OC 中生出私出成员变量吗?怎么落实 

在.m 文件被落实匿名类别 Category 

  1. 分子变量的作用域有啊几种

 @public, @protected, @private 

  1. 数据库能够不克存图片,怎么抱?
    可以抱图片, nsdata 存,但是我们一般不这样存,我们怀着路径将
    图片在沙盒中。 
  1. 差屏幕怎么适配
    iphone4, iphone4S 640×960 retina

iphone5, iphone5S, 640×1136

iphone6, iphone6S, 1334×750像素

iphone6 plus  1920×1080像素

iphone6s plus  1920×1080像素

  1. 不同版本屏幕旋转怎么适配 

  2. 外存警告应该怎么做 

尽量多之假释内存。把一些内容写到文件中,不要保存在内存中。

  1. iOS7, iOS8, iOS9区别 

  2. NSNotification
    是一块还是异步的 

是共同的. 如果急需异步 必须利用 NSNotificationQueue 实现