设为首页 加入收藏

TOP

iOS面试题总结 (三)(一)
2017-10-13 10:33:06 】 浏览:4703
Tags:iOS 试题 总结
  • 22 键值编码KVC

    • KVC全称key valued coding 键值编码

    • 提到KVC,就不能不提反射机制,反射机制就是在运行状态中,对于任意一个类,都能够调用他的所有属性和方法,对于任意一个对象,都能够调用他的任意一个方法和属性,java和C#都有,ObjC也有,所以你根本不必进行任何操作就可以进行属性的动态读写,这就是KVC.KVC的操作方法基本上都由NSKeyValueCoding提供,而他是NSObject的类别,也就是说所以的对象都支持KVC操作。

    • 使用KVC间接修改对象属性时,系统会自动判断对象属性的类型,并完成转换。

    • KVC可以访问成员变量,无论是否提供get,set方法,无论可见性咋样,是否有readonly修饰。

    • KVC的主要作用dict和model之间的互转

    • 字典转模型
      [self setValuesForKeysWithDictionary:dict];

    • 模型转字典
      [p dictionaryWithValuesForKeys:array];

    • 使用KVC计算属性

          举例:[p valueForKeyPath:@"books.@sum.price"];
      
      @avg:平均值
      @count:总数
      @max:最大
      @min:最小
      @sum:总数
  • 23 键值观察KVO

    • 键值观察机制是一种能够使对象获取到其它对象属性变化的通知,极大的简化了代码。

    • 实现KVO键值观察模式,被观察的对象必须使用KVC键值编码来修改他的实例变量,这样才可以被观察者观察到,所以说KVC是KVO的基础。

KVC,KVO原理剖析

  • 24 协议

    • 概念:定义了一个接口,其他类负责实现这个接口,如果你的类实现了一个协议的方法时,则说明该类遵循此协议

    • 非正式协议:NSObject的类别

    • 协议的修饰符:@required 表示这个方法是必须实现的,@optional,这个表示这个方法是可以实现也可以不实现的,

    • conformsToProtocol方法--监测一个方法是否遵循某个协议

    • 协议是无类型的,一个协议可以被多个类使用,一个类可以遵循多个协议

  • 25 委托

    • 代理又叫委托,是一种设计模式,代理是对象与对象之间的通讯,代理解除了对象之间的耦合性。
    • 代理可以理解为JAVA重的回调监听机制。
    • 委托步骤

      • 定义协议

      • 创建委托对象,委托对象必须实现委托协议

      • 实现协议方法

  • 26 NSNotification、Block、代理、和KVO的区别。

    • 代理是一种回调机制,且是一对一的关系,通知是一对多。

    • Delegate比NSNotification效率高

    • 代理和Block一般是一对一的通信

    • 代理需要定义协议方法,代理对象需要实现协议方法,并且需要建立代理关系

    • Block比较简洁,不需要定义繁琐的协议方法,如果通信事件比较多的话,建议使用代理

  • 27 当我们调用一个静态方法时,需要对对象进行release吗??

    • 不需要,静态方法(类方法)创建一个对象时,对象已经被放入自动释放池中
  • 28 static self super关键字的作用

    • 函数体内static变量的作用范围是函数体,该变量只分配一次内存,只初始化一次。

    • 在类中satic成员变量属于整个类所拥有,对类的所有对象只有一份拷贝

    • self 当前消息的接受者

    • super 向父类发送消息

  • 29 iOS数据持久化有几种??

    • 属性列表:plist文件

    • 归档:归档通过序列化的形式,键值关系存储到本地,转为二进制流,通过runtime实现自动化归档和解档

    遵循NSCodeing协议,需要实现encodeWithCoder和initWithCoder方法,如果是子类继承父类的话,需要实现父类的归档和解档方法

    如果需要归档的属性过多,可以使用runtime来进行归档

    • SQlite数据库-一种关系型数据库

    • CoreData:通过管理对象进行、增、删、改、查的,他的底层其实还是SQL语句,但是他却是一个对象型数据库

  • 30 CoreData

    • CoreData介绍

      • CoreData是面向对象的API,CoreData是iOS中非常重要的一项技术,几乎在所有编写的程序中,CoraData也作为数据存储的基础。

      • 他是苹果官方提供的一套框架,用来解决与对象声明周期管理,对象关系管理和持久化等问题

      • 他提供的是对象-关系映射功能,可以将OC对象转换成数据,保存到SQL中,然后将保存后的数据还原成OC对象。

    • CoreData的特征

      • 通过CoreData管理应用程序的数据模型,可以极大程度减少需要编写的代码数量。

      • 将对象数据存储在SQLite数据库已获得性能优化。

      • 提供NSFetchResultsController类用于管理表视图的数据,即将Core Data的持久化存储在表视图中,并对这些数据进行管理:增删查改。

      • 管理undo/redo操纵;

      • 检查托管对象的属性值是否正确。
    • CoreData的6成员对象
      • NSManageObject:被管理的数据记录Managed Object Model是描述应用程序的数据模型,这个模型包含实体(Entity)、特性(Property)、读取请求(Fetch Request)等。

      • NSManageObjectContext:管理对象上下文,持久性存储模型对象,参与数据对象进行各种操作的全过程,并监测数据对象的变化,以提供对undo/redo的支持及更新绑定到数据的UI。

      • NSPersistentStoreCoordinator:连接数据库的Persistent Store Coordinator相当于数据文件管理器,处理底层的对数据文件的读取和写入,一般我们与这个没有交集。

      • NSManagedObjectModel:被管理的数据模型、数据结构。

      • NSFetchRequest:数据请求;

      • NSEntityDescription:表格实体结构,还需知道.xcdatamodel文件编译后为.momd或者.mom文件。
    • CoreData的功能

      • 对于KVC和KVO完整且自动化的支持,除了为属性整合KVO和KVC访问方法外,还整合了适当的集合访问方法来处理多值关系;

      • 自动验证属性(property)值;

      • 支持跟踪修改和撤销操作;

      • 关系维护,Core Data管理数据的关系传播,包括维护对象间的一致性;

      • 在内存上和界面上分组、过滤、组织数据;

      • 自动支持对象存储在外部数据仓库的功能;

      • 创建复杂请求:无需动手写SQL语句,在获取请求(fetch request)中关联NSPredicate。NSPreadicate支持基本功能、相关子查询和其他高级的SQL特性。它支持正确的Unicode编码、区域感知查询、排序和正则表达式;

      • 延迟操作:Core Data使用懒加载(lazy loading)方式减少内存负载,还支持部分实体化延迟加载和复制对象的数据共享机制;

      • 合并策略:Core Data内置版本跟踪和乐观锁(optimistic locking)来支持多用户写入冲突的解决,其中,乐观锁就是对数据冲突进行检测,若冲突就返回冲突的信息;

      • 数据迁移:Core Data的Schema Migration工具可以简化应对数据库结构变化的任务,在某些情况允许你执行高效率的数据库原地迁移工作;

      • 可选择针对程序C
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇swift 2.2 语法 (中) 下一篇机试题:地图定位、拍照并显示、..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目