`

一些问题的积累

    博客分类:
  • ios
 
阅读更多

1.Category支持添加属性与成员变量吗


不支持


2.iOS7之后, 蓝牙的围栏功能

所谓iBeacons,就是一种使用蓝牙低能耗进行微定位的技术,它允许iOS设备使用蓝牙4.0获取位置数据。也就是说,配备iBeacons技术的iOS设备就相当于位置数据的接收方和发送方,在蓝牙时代里进行着数据的互联。

iBeacon的出现让地理定位能够更加精确——从几百米的精度提高到了一米甚至半米。这个精细度非常高的地理围栏,终于可以让很多的实际物体都有条件具有了定义自己地理位置标识的能力,例如一张桌子、一把椅子,都可以有自己的地理坐标

3.说说Cell重用原理

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

  static NSString *CellIdentifier = [NSString stringWithFormat:@"Cell"];

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

  if (cell == nil) {

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

  }

  //config the cell

  return cell;

}

这里就涉及了TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个tableCell。而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell,对cell做单独的显示配置,来达到既不影响显示效果,又能充分节约内容的目的。下面简要分析一下它的实现原理。




  

  查看UITableView头文件,会找到NSMutableArray*  visiableCells,和NSMutableDictnery* reusableTableCells两个结构。visiableCells内保存当前显示的cells,reusableTableCells保存可重用的cells。

  比如:有100条数据,iPhone一屏最多显示10个cell。程序最开始显示TableView的情况是:

  2. 向下拖动tableView,当cell1完全移出屏幕,并且cell11(它也是alloc出来的,原因同上)完全显示出来的时候。cell11加入到visiableCells,cell1移出visiableCells,cell1加入到reusableTableCells。

  所以整个过程并不难理解,但需要注意正是因为这样的原因:配置Cell的时候一定要注意,对取出的重用的cell做重新赋值,不要遗留老数据。

  使用过程中,我注意到,并不是只有拖动超出屏幕的时候才会更新reusableTableCells表,还有:

  2. reloadRowsAtIndex,刷新指定的IndexPath。如果调用时reusableTableCells为空,那么cellForRowAtIndexPath调用后,是新创建cell,新的cell加入到visiableCells。老的cell移出visiableCells,加入到reusableTableCells。于是,之后的刷新就有cell做reuse了。

4.MVC是否了解?介绍下使用情况。




 



模型会把任何数据的变更通知控制器,然后控制器更新视图数据。视图对象通知控制器用户的操作,控制器要么根据需要来更新模型,要么检索任何被请求的数据。


       Model:
模型保存应用程序的数据,定义了怎么去操作它。例如在本应用中模型就是Album类。
        View: 
视图是模型的可视化表示以及用户交互的控件;基本上来说,所有的UIView对象以及它的子类都属于视图。在本应用中AlbumView代表了视图。
       Controller:
控制器是一个协调所有工作的中介者(Mediator)。它访问模型中的数据并在视图中展示它们,同时它们还监听事件和根据需要操作数据。你可以猜猜哪个类是控制器吗?它正是:ViewController。







 



5.MVC里面, View怎么通知到Model
应该是不直接交互的,通过controller
6.了解delegate吗?并介绍


7.如果现在要实现一个下载功能, 你要如何设计。说说每个类具体做什么

 

  • 如果让你设计KVO, 要怎么设计
  • 现在你是如何适配的
  • 比较下storyboard和全代码
  • 如果有1w张图片要在屏幕滚动显示(每张图片满屏), 至少要几个cell, 如何实现循环滚动
  • 平时是怎么进行测试的, 内存方面怎么测试
  • 平时自己有没有封装过比较复杂的控件
  • 平时如何实现网络请求, 一般返回的数据是什么格式, 如何解析..
  • 如何实现类似 “Find My iPhone” 这样功能
  1. autorelease 和 @autoreleasepool区别
  2. unsafe_unretained , weak, assign 区别
  3. 在block里面, 对数组执行添加操作, 这个数组需要声明成 __block吗
  4. 在block里面, 对NSInteger进行修改, 这个NSInteger是否需要声明成__blcok
  5. NSThread, NSOperation, GCD区别
  6. runtime什么时候用
  7. 通知和KVO区别
  8. 深度遍历和广度遍历使用场景

腾讯_微信事业部:

  1. 常用的设计模式
  2. 如何保证软件质量, 怎么分析Crash日志
  3. 谈谈你觉得最重要的一个项目
  4. 你的个人主页是怎么写的
  5. 假如我是一名初学者, 你会向我推荐哪些第三方库
  6. 使用了第三方库, 有看他们是怎么实现的吗
  7. 有没有看过大型项目的源码
  8. 强连通量算法
  9. 最短路径算法
  10. 排序算法
  11. 25个人, 每5人1个跑道, 最少经过几次赛跑, 得到前3名

 

  1. 求两个整数的最大公约数
  2. 微信用户都是双向的好友,a是b的好友,那么b一定是a的。给定一个用户列表,有些用户是好友,有些不是,请判断,这些用户是否可以划分为两组,每组内的用 户,互相都不是好友。如果能,请给出这个划分。
  • 大小: 11.5 KB
  • 大小: 44.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics