笔试笔试!!笔试笔试!!
来源:互联网 发布:哪个软件看泰剧最多 编辑:程序博客网 时间:2024/04/25 07:23
四面八方的转载
浅复制与深复制的区别?
浅复制,只复制指向对象的指针,而不复制引用对象本身。
深复制:复制引用对象本身。
类别的作用?
可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除。并且如果类别和原来类中的方法产生名称冲突,类别将覆盖原来的方法,类别具有更高优先级。
类别的主要3个作用
1)将类的实现分散到多个不同文件或多个不同框架中
2)创建对私有方法的前向引用(参考http://book.51cto.com/art/200907/138052.htm)
3)向对象添加非正式协议
继承可以增加修改方法,并且可以增加属性
类别和扩展的区别?
分类和扩展的区别不同在于后者可以添加属性。另外后者添加的方法是必须实现的,扩展可以认为是一个私有的分类
obj中的协议和java中的接口概念有何不同?
OBJ中的协议有2个层面:正式与非正式。正式是属于设计模式考虑的范畴,不是必须实现的,如果有实现,就会改变类的属性。非正式协议就是类别的另一种表达方式
KVO与KVC
kvo:键值观察机制,提供了观察某一属性变化的方法。
kvc:键值编码机制,一种间接访问对象的属性使用字符串来表示属性,而不是通过存取方法,直接通过实例变量访问的机制。
kvo,举一个button的例子
[self addObserver:self forKeyPath:@"highlighted" options:0 context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"highlighted"] )
{ [self setNeedsDisplay]; }
}
系统根据keyPath去取的相应地值发生变化,理论上和kvc机制是一个道理。
kvc如何通过key找到value,当通过kvc调用对象时,比如:[self valueForKey:@"someKey"]时,程序会自动试图通过几种不同的方式来解析这个调用
代理的作用?
代理的目的是改变或者传递控制链
允许一类在某些特定时刻通知其他类,而不需要获取得到那些类的指针。减少框架复杂度(低耦合高内聚)
obc是动态运行时语言是什么意思?
数据类型的确定是由编译时,推迟到运行时。运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指针方法。
关于多态性?
不同的对象以自己的方式响应相同消息的能力叫做多态。
通知和协议不同之处?
协议有控制链(has-a)的关系,翻译为单一拥有和可控制的对应关系,协议将俩个关系很远的类联系起来,可以receive把结果返回给sender。
通知的话,可以一对多,一条消息可以发送给多个消息接受者。它只关心发出通知,不管多少接收到感兴趣要处理
说说响应链?
frame与bounds有什么区别?
frame是相对于父view的位置
bounds是相对于系统view的位置
method和selector有何不同?
selector是一个方法的名字,method是一个组合,包含名字和实现
什么是懒汉模式?
懒汉模式,只有用到的时候采取初始化,可以理解为延迟加载
如tableView
tableView显示很多条目,有时候需要显示图片,但一次从服务器上取来所有图片对用户来说是浪费流量,对服务器来说也是负担,最好是按需加载,即当用户要浏览该条目时,在去加载它的图片。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *image = [self getImageForCellAtIndexPath:indexPath]; //从网上取得图片
[cell.imageView setImage:image];
}
这个虽然解决了延迟加载的问题,但当网上较慢,或者图片很大时,你会发现程序可能会失去对用户的响应。
因为UIImage *image = [self getImageForCellAtIndexPath:indexPath]; 这个方法可能需要花费大量的时间,主要处理这个方法。所以会失去对用户的响应。
所以将该方法提取出来,再开一个线程去做这件事情。
- (void)updateImageForCellAtIndexPath:(NSIndexPath *)indexPath
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIImage *image = [self getImageForCellAtIndexPath:indexPath];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
[pool release];
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[NSThread detachNewThreadSelector:@selector(updateImageForCellAtIndexPath:) toTarget:self withObject:indexPath];
}
oc可以多重继承么?可以实现多个接口么?重写一个类的方式用来继承好还是分类好?为什么?
不能,可以,分类
什么是推送?
是一种技术,客户端获取资源的一种手段,一般情况下,是客户端主动去pull,推送的话是服务器主动push
单例?
系统只有一个该类对象,并且保证只有统一访问接口
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试~~
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 笔试
- 应用的相关测试平台
- libgdx iOS 项目应用名国际化
- Boost.deadline_timer实现定时器功能时需注意的时区问题
- Android学习之旅:Android版本号与Android level对应关系
- 【动态规划】[HDU1693] Eat the Trees
- 笔试笔试!!笔试笔试!!
- Convert Sorted Array to Binary Search Tree-LeetCode
- 条款21 必须返回对象时,别妄想返回其reference
- mysq密码忘记后重置
- 服务器性能调优-菜鸟初尝试
- oc小练习
- Palindrome Partitioning--LeetCode
- OS7 UITabBar自定义选中图片显示为默认蓝色的Bug
- c++中new的三种用法详细解析