面试题2
来源:互联网 发布:linux服务器禁止ping 编辑:程序博客网 时间:2024/06/13 21:39
8.瀑布流是怎么理解和实现的
1.如果简单来说,用3个tableview就可以实现瀑布流,3个tableview实现联动滚动。
2.其实最好的做法是在scrollview上使用3个复用队列,如果一种一个cell超过屏幕,不能release,而是把它回收到复用队列中,如果要创建一个cell,首先从复用队列中取一个,然后使用。
9.你如何利用复用机制
一般是对uiscrollview做复用机制,因为uiscrollview滚动窗口没有复用,所以要做,原理就是超过屏幕的view不能销毁,而要放在复用队列/池里面存放起来,然后以后要在scrollview显示view,首先不要alloc创建,而要首先去复用池里面找有没有可复用的view,如果没有就alloc,如果有就直接用。
10、类别的作用
类别是给已有的类添加方法,但是不能添加变量,匿名类别除外
11、类别和继承有什么区别
类别/类目/Category很方便给现有的类添加方法。但是不能添加成员变量,匿名类别除外,比如可以个NSString增加方法,给UINavigationBar增加方法,比如SDWebImage给UIImageView增加了setImageWithURL:方法。类别对于使用者很方便。
继承可以给现有的类增加方法和成员变量。继承对于使用者来说不如类别方便,比如对SDWebImage如果用继承的话,那么就需要写一个类似于QFImageView,然后把所有的UIImageView改写成QFImageView,这里不如类别方便。
12、C和OC有哪些基本数据类型
C :char ,short ,int ,struct ,union ,enum
OC: NSString NSArray,NSDictionary
13、解释多线程】NSThread ,NSOperation,GCD
多线程在iOS中用的很多,比如每个asi请求,SDWebImage请求,数据请求等待网络数据处理,多线程/异步就是主要是为了界面流畅,防止界面假死。
每一个asi请求就是一个NSOperation
每一个NSUrlConnection也是一个线程
NSThread是创建线程的一个通用的类。比如线程创建,取消,开始等
NSoperation就是一个简单的以任务为导向的多线程模型。目的是为了不懂操作系统,不懂线程的人使用的。
GCD类似于NSOperation,是一个blocks版本的线程模型。
14、什么是异步
相对于同步来说,单独起一个或者多个线程去处理
异步是一个概念,线程还是一个技术,异步就是用线程这种技术实现的。
比如界面下载数据,我们启动一个异步任务ASI去网络下载数据,
然后异步刷新界面,我们无需等待网络数据下载完成。
15、代理和协议有什么区别
代理是一种概念,协议是一种技术,代理是用协议来实现的,代理是两个对象间通讯的一种方式。
代理主要做反向传值的。实现系统的一些回调方法,比如scrollview滑动事件,选择照片,asi网络下载完成等。
16、代理和通知中心/广播/NotificationCenter有什么区别
代理主要是反向传值,一般用来1:1的两个对象通讯上。
通知中心是通过注册然后接受事件的一种N:N(多对多)的方法
17、UITextField、UITextView的区别
UITextField不能换行,UITextView可以换行。TextView可以点击字体放大,可以复制。相同的是他们都有代理。
18、怎么解析html源码
一般html是通过webview来显示的。一般简单的html是通过解析字符串来解析。没有成熟的html解析器
一般服务器去抓取html 解析html 形成 json xml文件供手机端读取
19.Objective-C如何和javascript通讯
Objective-c ---->javascript --- >html里面的内容
Objective-c 是通过stringByEvaluatingJavaScriptFromString函数来执行html中的javascript
javascript --->url ---->objective-c本地方法
需要通过UIWebView中的代理函数
- (BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType;
20、如何调用iOS打电话,发短信
[[UIApplication sharedApplication] openURL:[NSURL urlwithString:@”tel://1543434”]];[[UIApplication sharedApplication] openURL:[NSURL urlwithString:@”sms://1572234”]];[[UIApplication sharedApplication] openURL:[NSURLurlwithString:@”mail://hello@hello.com”]];
[[UIApplication sharedApplication] openURL:[NSURLurlwithString:@”http://1000phone.net”]];
21、下拉刷新需要实现哪几个方法,刷新流程
下拉一般使用EGORefresh进行。原理是利用scrollview的反弹效果把刷新view加在scrollview的负坐标上。通过代理方法触发。
22、解释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内联函数
- [面试题] 随机数相关面试题(2)
- java面试题(2)
- 面试题2
- 英文面试题(2)
- java面试题2
- java面试题2
- java面试题2
- 面试题2-- Google
- Java面试题(2)
- C++面试题2
- Java面试题2
- Java面试题2
- 面试题2
- .net面试题2
- 面试题2
- java面试题2
- java面试题2
- java面试题2
- CocoaPods安装和使用和遇到的坑
- POJ 1026 Cipher 置换群
- 菜鸟程序员如何防止上错船
- UVa 11054 Wine trading (贪心)
- iOS UI07_导航视图控制器
- 面试题2
- hdu 1429 胜利大逃亡(续) (bfs + 状态压缩)
- Java - Thinking in Java 第8章 习题
- poj Dungeon Master
- 开源 java CMS - FreeCMS2.3字典管理
- 陕西信合签名控件不能安装问题
- qdbuscpp2xml工具用法中输入和输入
- 黑马程序员————java基础之线程
- POJ___3126Prime Path