iOS_知识点

/**

1.UIButtonUITableView的层级结构

 1> 继承结构

 UIButton UIButton : UIControl : UIView : UIResponder : NSObject

 UITableView UITableView : UIScrollView : UIView : UIResponder : NSObject

 

 2> 内部的子控件结构

 UIButton UILabel + UIImageView

 UITableView Cell + 分割线


2.FoundationCoreFoundation框架对象通过什么关键字进行转换

 1> Foundation框架中的数据类型前缀是NSCoreFoundation的数据类型前缀是CF

 2> __bridge

 // Foundation框架的字符串

 NSString *str = @"哈哈哈";

 

 // CoreFoundation框架的字符串

 CFStringRef str2 = (__bridge CFStringRef)str;

 

 // 取得当前安装软件的版本号

 NSString *version = [NSBundle mainBundle].infoDictionary[(__bridge NSString *)kCFBundleVersionKey];


3.KVO是什么?内部是怎样实现的?

 * KVC : Key Value Coding(健值编码,直接访问成员变量)

 [queue setValue:@"abc" forKeyPath:@"name"]; _name\name\setName:

 queue.name = @"abc";

 

 * Key Value Observing(健值监听)

 可以监听某个对象属性值的改变(监听成员变量值的改变)

 1> 添加监听器

 // a会监听bname属性值的改变

 [a addObserver:b forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];

 

 2> bname属性值改变时,就会调用a的某个方法:

 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context


4.是否能将比较耗时的操作放在NSNotificationCenter中的处理?为什么?怎么处理?

 1> 不能

 2> 通知中心所做的操作都是在主线程中执行,主线程中不允许执行比较耗时的操作

 3> 将比较耗时的操作放到其他线程中执行(NSThreadNSOperationGCD


5.利用NSOperationNSOperationQueue时,有3NSOperation分别为A\B\C,要求A\B执行完之后,才执行C,怎么做?

 1> 一个NSOpetaion对象封装 一个操作

 2> NSOpetaion对象放到NSOperationQueue这个队列对象中,就会异步(后台线程,非主线程)执行 NSOpetaion对象封装的操作

 3> 设置依赖关系

 NSOperation *a = [NSBlockOperation blockOperationWithBlock:^{

 

 }];

 

 NSOperation *b = [NSBlockOperation blockOperationWithBlock:^{

 

 }];

 

 NSOperation *c = [NSBlockOperation blockOperationWithBlock:^{

 

 }];

 

 [c addDependency:a];

 [c addDependency:b];

 

 NSOperationQueue *queue = [[NSOperationQueue alloc] init];

 [queue addOperation:a]; // 2s

 [queue addOperation:b]; // 15s

 [queue addOperation:c]; // 5s


6.在非ARC中,可以对某些对象加上autorelease关键字,作用是啥?被autorelease修饰的对象什么时候被释放?

1> 会将这个对象 添加 一个自动释放池中,不用再关心这个对象什么时候调用release

2> 对象所在的自动释放池被销毁的时候,对象会做一次release操作,如果这时对象的计数器为0了,就会被释放

 

7.详细说明app的启动过程,从main.m文件说起,其中有哪些函数,几个参数,作用是啥?

 1> 执行main函数

 2> main函数内部执行UIApplicationMain函数

 3> UIApplicationMain函数有4个参数

 * 2个参数:int argc, char * argv[]是标准C语言main函数参数,交给系统处理即可(运行程序时所附带的参数)

 * NSString *principalClassName : 传入UIApplication或者子类的名称,nil默认就是UIApplication

 * NSString *delegateClassName : 代理的类名

 4> 根据principalClassName创建一个UIApplication对象

 5> 根据delegateClassName创建一个代理对象,设置为UIApplicationdelegate

 6> 开启一个消息循环,监听所有的系统事件(程序启动完毕、程序进入前台、程序进入后台、程序接收内存警告)

 7> 监听到对应的事件,就会通知代理,调用代理相应的方法处理系统事件

 8> 程序启动完毕后,就会调用代理的application:didFinishLaunchingWithOptions:方法

 * 创建窗口

 * 设置窗口的根控制器

 * 显示窗口(成为主窗口)

 

8.CAAnimation是做什么的?写一下它的层级结构

 * CAAnimation封装一个动画,描述动画的执行过程(动画的时间、具体属性)

 * 将一个CAAnimation对象添加一个控件的layer(图层)上,这个layer就会开始执行这个动画

 * 继承结构比较复杂,主要的子类有如下几个:

 CABasicAnimation

 CAKeyframeAnimation


9.iOS7之前,后台执行操作有几种形式?都是什么?

 1> music(音乐,多媒体)

 2> voip(实时网络连接,后台语音)

 3> location(定位)

 Info.plist中添加UIBackgroundModes键值

 http://bbs.weiphone.com/read-htm-tid-6565487.html

 http://club.tgfcer.com/thread-6721943-1-1.html

 遇到技术问题:

 http://stackoverflow.com


10.一个有序的序列M,判断其中是否有2个元素A\B的和K?如何判断三个元素A\B\C\的和为K呢?提供思路?

 * 遍历

*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值