IOS的一些面试知识点
2015-05-13 22:44
253 查看
◆fame,bounds,center,alpha,opaque,hidden
这些都是view的一些基本属性。frame是描述该view在其父视图中的一块区域。其坐标系是在其父视图中的坐标。我们在进行view的初始化时会经常使用到frame。bounds也是描述该view的大小,是其在自身的坐标系中的位置大小。center是描述其在父视图的中心位置坐标。我们在进行view的位置改变而不改变view的大小的时,会使用center。alpha是用来描述改view的透明度从0到1,0表示的是透明,1表示不透明。alpha支持动画(animation),alpha
= 0 与 hidden = YES 效果一样都是看不到view,但是后者相比开销大。在alpha等于0时view接受touch事件,但是hidden则不接受。并且hidden和apaque 不支持动画。alpha并不影响镶嵌在其内部view行为,而hidden会影响。当把view设置为透明背景时,一般把opaque设置为NO,可以减少开销,优化内存.opaque影响图形绘制系统。设置为YES,会优化view的绘制。
◆搞清楚touch事件的传递(事件的响应链)
只有继承了UIResponder的类才能响应touch事件,从上图的响应者链可以看出,优先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而下传递事件。直到单例UIWindow对象,最后是单例UIApplication对象以终止,UIApplication的下一个响应者是nil,已结束整个响应循环。事件在传递过程中视图可以决定是否需要对该事件进行响应。
事件分发(Event Delivery)
◆nil,NSNULL,NULL区别
nil是指向obj-c中对象的空指针,是一个对象,在o-c中ni对象调用方法不会引起crash。
Nil是指向obj-c中的类的空指针,表示的是一个空类。
NULL是指向任何类型的空指针(如c/c++中的空指针),在objective-c中是一个数值。
NSNULL用于集合操作,在集合对象中,表示一个空值的集合对象。
◆KVC
and KVO
KVC(key-value-coding)键值编码,是一种间接操作对象属性的一种机制,可以给属性设置值。通过setValue:forKey:和valueForKey,实现对属性的存取和访问。
KVO(key-value-observing)键值观察,是一种使用观察者模式来观察属性的变化以便通知注册的观察者。通过注册observing对象addObserver:forKeyPath:options:context:和观察者类必须重写方法 observeValueForKeyPath:ofObject:change:context:。常应用MVC模型中,数据库(dataModal)发生变化时,引起view改变。
◆NSThread,NSOperation,GCD
NSThread,NSOperation,GCD是IOS中使用多线程的三种方式之一。他们各有优缺点。抽象层次是从低到高的,抽象度越高的使用越简单。
NSThread,缺点:需要自己维护线程的生命周期和线程的同步和互斥,但是这些都需要耗费系统的资源。优点:比其它两个更轻。
NSOperation,优点:不需要自己管理线程的生命周期和线程的同步和互斥等。只是需要关注自己的业务逻辑处理,需要和NSOperationQueue一起使用。
GCD,是Apple开发的一个多核编程解决方法,优点:比前面两者更高效更强大。
◆autorelease
,ARC 和非ARC
autorelease 自动释放,与之相关联的是一个自动释放池(NSAutoReleasePool).autorelease的变量会被放入自动释放池中。等到自动释放池释放时(drain)时,自动释放池中的自动释放变量会随之释放。ios系统应用程序在创建是有一个默认的NSAutoReleasePool,程序退出时会被销毁。但是对于每一个RunLoop,系统会隐含创建一个AutoReleasePool,所有的release
pool会构成一个栈式结构,每一个RunLoop结束,当前栈顶的pool会被销毁。
ARC,自动应用计数。(iOS 6加入)IOS内存管理是基于变量的应用计数的。这样系统帮你管理变量的release,retain等操作。
非ARC,非自动应用计数。手动管理内存。自己负责系统变量的release,retain等操作。做到谁分配谁释放,及alloc和release像对应。函数返回对象时使用autorelease。
可以使用Xcode将非ARC转化为ARC,ARC和非ARC混编。可在在编译ARC时使用-fno-objc-arc,-fobjc-arc标签。实际需要看工程是支持还是不支持ARC模式。
这些都是view的一些基本属性。frame是描述该view在其父视图中的一块区域。其坐标系是在其父视图中的坐标。我们在进行view的初始化时会经常使用到frame。bounds也是描述该view的大小,是其在自身的坐标系中的位置大小。center是描述其在父视图的中心位置坐标。我们在进行view的位置改变而不改变view的大小的时,会使用center。alpha是用来描述改view的透明度从0到1,0表示的是透明,1表示不透明。alpha支持动画(animation),alpha
= 0 与 hidden = YES 效果一样都是看不到view,但是后者相比开销大。在alpha等于0时view接受touch事件,但是hidden则不接受。并且hidden和apaque 不支持动画。alpha并不影响镶嵌在其内部view行为,而hidden会影响。当把view设置为透明背景时,一般把opaque设置为NO,可以减少开销,优化内存.opaque影响图形绘制系统。设置为YES,会优化view的绘制。
◆搞清楚touch事件的传递(事件的响应链)
只有继承了UIResponder的类才能响应touch事件,从上图的响应者链可以看出,优先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而下传递事件。直到单例UIWindow对象,最后是单例UIApplication对象以终止,UIApplication的下一个响应者是nil,已结束整个响应循环。事件在传递过程中视图可以决定是否需要对该事件进行响应。
事件分发(Event Delivery)
◆nil,NSNULL,NULL区别
nil是指向obj-c中对象的空指针,是一个对象,在o-c中ni对象调用方法不会引起crash。
Nil是指向obj-c中的类的空指针,表示的是一个空类。
NULL是指向任何类型的空指针(如c/c++中的空指针),在objective-c中是一个数值。
NSNULL用于集合操作,在集合对象中,表示一个空值的集合对象。
◆KVC
and KVO
KVC(key-value-coding)键值编码,是一种间接操作对象属性的一种机制,可以给属性设置值。通过setValue:forKey:和valueForKey,实现对属性的存取和访问。
KVO(key-value-observing)键值观察,是一种使用观察者模式来观察属性的变化以便通知注册的观察者。通过注册observing对象addObserver:forKeyPath:options:context:和观察者类必须重写方法 observeValueForKeyPath:ofObject:change:context:。常应用MVC模型中,数据库(dataModal)发生变化时,引起view改变。
◆NSThread,NSOperation,GCD
NSThread,NSOperation,GCD是IOS中使用多线程的三种方式之一。他们各有优缺点。抽象层次是从低到高的,抽象度越高的使用越简单。
NSThread,缺点:需要自己维护线程的生命周期和线程的同步和互斥,但是这些都需要耗费系统的资源。优点:比其它两个更轻。
NSOperation,优点:不需要自己管理线程的生命周期和线程的同步和互斥等。只是需要关注自己的业务逻辑处理,需要和NSOperationQueue一起使用。
GCD,是Apple开发的一个多核编程解决方法,优点:比前面两者更高效更强大。
◆autorelease
,ARC 和非ARC
autorelease 自动释放,与之相关联的是一个自动释放池(NSAutoReleasePool).autorelease的变量会被放入自动释放池中。等到自动释放池释放时(drain)时,自动释放池中的自动释放变量会随之释放。ios系统应用程序在创建是有一个默认的NSAutoReleasePool,程序退出时会被销毁。但是对于每一个RunLoop,系统会隐含创建一个AutoReleasePool,所有的release
pool会构成一个栈式结构,每一个RunLoop结束,当前栈顶的pool会被销毁。
ARC,自动应用计数。(iOS 6加入)IOS内存管理是基于变量的应用计数的。这样系统帮你管理变量的release,retain等操作。
非ARC,非自动应用计数。手动管理内存。自己负责系统变量的release,retain等操作。做到谁分配谁释放,及alloc和release像对应。函数返回对象时使用autorelease。
可以使用Xcode将非ARC转化为ARC,ARC和非ARC混编。可在在编译ARC时使用-fno-objc-arc,-fobjc-arc标签。实际需要看工程是支持还是不支持ARC模式。
相关文章推荐
- [置顶]iOS面试用到的一些知识点和技术
- iOS一些面试问题
- iOS面试-WebView一些知识
- 转:ios的一些知识点
- iOS开发之一些实用小知识点总结
- ios开发一些零碎的知识点(一)
- iOS 关于多线程的一些知识点(不断更新)
- iOS 面试时可能会提到的知识点,整理下!
- ios的一些知识点
- 互联网公司iOS开发工程师面试必看(最全知识点梳理)
- 一些java笔试和面试的知识点
- java 关于继承的一些重要知识点(面试易考点)
- iOS中的一些小知识点
- 最近看的一些关于数据结构和C++的面试知识点总结
- iOS - 招人时的一些面试问题
- 【ios开发工程师互联网名企面试】一个iOS程序员的BAT面试经验和知识点总结
- 一些我面试过程中遇到j2ee知识点的整理,答案来源于网络
- IOS 中的一些知识点
- ios一些开发中遇到的小知识点
- ios的一些知识点