`

一些问题的积累

    博客分类:
  • 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
分享到:
评论

相关推荐

    项目中遇到的问题积累

    以下是一些在项目中常见的问题及其解决方案: 1. **需求不明确**:这是项目初期常遇到的问题,需求模糊不清可能导致后期开发方向偏离。解决办法是在项目启动阶段进行详细的需求调研,制定明确的需求规格说明书,并...

    平时积累的一些js代码

    "平时积累的一些js代码"这个标题和描述暗示了这是一些作者在日常工作中收集和编写的JavaScript代码片段,可能涵盖了解决各种问题的解决方案或者实用功能。 在JavaScript中,我们可以学到以下几个关键知识点: 1. *...

    雷达信号的长时间积累

    彭应宁基于Keystone变换长时间相参积累的多普勒模糊问题研究》等,都涉及到了雷达信号长时间积累的实际应用和理论研究,这对于理解和掌握雷达信号长时间积累技术具有指导意义。 综上所述,雷达信号的长时间积累技术...

    vc的一些积累.doc

    在VC++编程中,积累的经验和技巧是提升项目效率的关键。以下是一些常见的知识点和实践方法: 1) **字体设置**: 在VC++中,我们可以使用`CreateFont`函数来创建字体对象,例如设置字体大小、样式和类型。创建的...

    嵌入式软件开发下的数据积累.doc

    虽然二进制数据存储方式在速度上有优势,因为它直接操作原始数据,没有额外的解析开销,但这种方法也存在一些问题: 1. 扩展性不佳:如果需要增加或修改结构体的字段,如增加用户名长度,原有的二进制格式就会变得...

    C++问题集锦,难点的积累

    本文将探讨一些常见的C++问题,特别是涉及到引用的使用和难点。 首先,让我们来看一道典型的C++面试题: ```cpp int func(x){ int countx = 0; while(x){ countx++; x = x&(x-1); } return countx; } ``` ...

    C#积累的类库

    一个“C#积累的类库”是开发者多年经验的结晶,包含了许多实用的功能模块和组件,旨在提高开发效率,解决常见问题。这个类库可能包含了各种类别,如数据处理、网络通信、文件操作、图形界面、算法实现等,是开发者...

    使用Keil+C调试某系统时积累的一些经验

    在使用Keil+C进行系统调试时,我们经常会...以上只是使用Keil+C调试系统时的一些基本知识点,实际调试过程中还会遇到更多具体问题,如硬件兼容性、外设驱动、RTOS调度等,都需要根据实际情况灵活应对,不断积累经验。

    使用Keil C调试某系统时积累的一些经验

    在使用Keil C进行系统调试时,我们经常会遇到各种挑战,但通过不断实践与学习,可以积累许多宝贵的经验。以下是一些关键知识点和技巧,旨在帮助熟悉或正在使用Keil C调试工具的开发者提高效率。 1. **设置调试环境*...

    (3.45MB)c#+多年积累的类库

    2. **异常处理**:类库可能包含专门用于异常处理的类,提供统一的错误报告和处理机制,使得程序在遇到问题时能更优雅地失败,而不是突然崩溃。 3. **数据访问层**:C#类库中可能包括了对数据库操作的支持,比如ADO...

    小议一年级教学解决问题的现状和解决策略

    2. 识字量有限,理解能力受限:由于阅读面狭窄,一些学生在面对文字和图像结合的问题时,无法有效提取和理解信息,特别是那些阅读能力较弱的学生,这加大了他们学习的难度。 3. 思维局限性:一年级学生的思维大多...

    多年积累C#的类库

    标签中的“多年积累”暗示了这些类库经过了时间的考验,可能包含了对各种场景和问题的解决方案,不仅覆盖了基础功能,也可能涉及到一些高级特性和技术。这样的类库对于初学者来说是学习和理解C#高级特性的良好教材,...

    加速知识积累的问答网站设计与实现-学位论文.doc

    本资源总结了一个问答网站的设计与实现,该网站旨在加速知识积累,结合了一些问答网站的功能,进行了分析设计,实现了用户注册登录、提出问题、回答问题、查询问答记录等基础问答功能。此外,该系统还添加了用户个人...

    软件开发分享,个人平时小积累

    【描述】:“一些关于本人以前遇到的问题,希望对大家多多帮助^_^” 描述中提到,这些资料是作者在过去遇到的问题及其解决方案,表明这些知识点可能涵盖了一些常见的技术难题和bug修复。作者希望通过分享这些问题的...

    JAVA程序员必读---编程中的一些共同的问题

    Java编程中遇到的问题往往是新手和经验丰富的程序员都可能面临的挑战。本文将针对常见的问题进行详细的解答,帮助Java程序员提升编程技能。...在编程实践中,不断学习和积累经验是提升编程技能的关键。

    优秀资料(2021-2022年收藏)小学低年级词语积累的探索.doc

    小学低年级词语积累是语言学习的关键阶段,但目前的教学实践中存在一些问题。首先,部分教师并未充分认识到低年级积累的重要性,认为过多的积累任务会增加学生负担,主张将重点放在识字写字上,而非积累。然而,正如...

    项目中经常用到的一些知识技术积累(java)

    本文将深入探讨在"项目中经常用到的一些知识技术积累(java)",并根据提供的标签,包括"java servlet struts spring hibernate jsp jdbc ejb oracle",来详细讲解它们的核心概念、应用场景以及如何相互协作。...

    java开发常见问题

    java开发工作两年遇到的技术问题以及查找到的解决方案还有一些积累,涉及前端技术,android开发,java后台以及数据库sql优化,session共享,单点登录,kafka入门,websocket,线程安全等。

    通信技术专业校企协同技术技能积累机制的研究.pdf

    但目前存在一些问题,如企业对技术积累的意识薄弱,技术积累的生态环境不佳,以及优秀技术人才的短缺。传统的职业院校主要依赖于技术技能的自主积累,这种方式可能无法快速适应行业变化和新技术的发展。 为了解决...

    全球变暖与生态积累效应

    全球变暖是一个全球性的环境问题,它指的是地球表面平均温度和近地表平均气温的升高。这一现象并非指全球每个地区都在变暖,或者每个季节都在变暖,而是地球表层环境总体年均温的变化。全球变暖对生态系统有着深远的...

Global site tag (gtag.js) - Google Analytics