微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

精选150道iOS面试题

1.UITableview创建方式

(1) 自定义高度

  • 1 新建一个继承自UITableViewCell的类
  • 2 重写initWithStyle:reuseIdentifier:方法
  • 3 添加所有需要显示的子控件(不需要设置子控件的数据和frame,子控件要添加到 contentView中)
  • 4 进行子控件一次性的属性设置(有些属性只需要设置一次,比如字体\固定的图片)
  • 5 供2个模型
    数据模型: 存放文字数据\图片数据
    frame模型: 存放数据模型\所有子控件的frame\cell的高度
  • 6 cell拥有一个frame模型(不要直接拥有数据模型)
  • 7 重写frame模型属性的setter方法: 在这方法中设置子控件的显示数据和frame

(2) 自定义高度原理

A 手动计算

  • 1 由于heightForRow比cellForRow方法调用,创建frame模型包含微博模型,重写微博模型
    赋值set方法,ᨀ前计算cell子控件的frame并保存,heightForRow方法中取出frame模型中保存
    的高度,实现自定义高度cell
  • 2 设置最大尺寸、文本属性,根据文本内容计算正文内容展示尺寸
  • 3 cellForRow中创建自定义cell包含frame属性,重写frame属性set方法创建cell子控件并赋
    值frame模型保存的子控件尺寸

B. 自动计算

2.Swift和OC的区别

苹果宣称 Swift 的特点是:

  • (1)快速、现代、安全、互动,而且明显优于 Objective-C 语言
  • (2)可以使用现有的 Cocoa 和 Cocoa Touch 框架
  • (3) Swift 取消了 Objective C 的指针/地址等不安全访问的使用
  • (4)ᨀ供了类似 Java 的名字空间(namespace)、泛型 - (generic)var、运算对象重载(operator overloading
  • (5) Swift 被简单的形容为 “没有 C 的 Objective-C”(Objective-C without the C)
  • (6)为苹果开发工具带来了Xcode Playgrounds功能,该功能ᨀ供强大的互动效果,能让Swift 源代码在撰写过程中实时显示出其运行结果;
  • (7)基于C和Objective-C,而却没有C的一些兼容约束;
  • (8)采用了安全的编程模式;
  • (9)界面基于Cocoa和Cocoa Touch框架;
  • (10) 舍弃 Objective C 早期应用 Smalltalk 的语法,保留了Smalltalk的动态特性,全面改为句点表示法
  • (11) 类型严谨 对比oc的动态绑定

3.synthesize&denamic

  • (1) 通过@synthesize 指令告诉编译器在编译期间产生 getter/setter 方法
  • (2) 通过@dynamic 指令,自己实现方法
    有些存取是在运行时动态创建的,如在 CoreData 的 NSManagedobject 类使用的某些。如果你想这些情况下,声明和使用属性,但要避免缺少方法在编译时的警告,你可以使用@dynamic 动态指令,而不是@synthesize 合成指令。

4.在项目开发中常用 的开发工具有哪些?

Instrument beyondCompare git corn stone application loadder idea(编写 h5 和 RN)

5.UITableView&UICollection

UICollectionView 是 iOS6 新引进的 API,用于展示集合视图,布局更加灵活,其用法类似于 UITableView。而 UICollectionView、UICollectionViewCell 与 UITableView、UITableViewCell 在用法上有相似 的也有不同的,下面是一些基本的使用方法:对于 UITableView,仅需要 UITableViewDataSource,UITableViewDelegate 这两个协议,使用 UICollectionView 需要实现 UICollectionViewDataSource,UICollectionViewDelegate ,UICollectionViewDelegateFlowLayout 这三个协议,这是因为 UICollectionViewDelegateFlowLayout 实际上是 UICollectionViewDelegate 的一个子协议,它继承 了 UICollectionViewDelegate,它的作用是供一些定义 UICollectionView 布局模式的函数

5.nsproxy&NSObject

NSObjetct: NSObject 协议组对所有的 Object-C 下的 objects 都生效。 如果 objects 遵从该协议,就会被看作是 first-class objects(一级类)。另外,遵从该协议的 objects 的 retain,release,autorelease 等方法也服从 objects 的管理和在 Foundation 中定义的释放方法。一些容器中的对象也可以管理这些 objects,比如 说 NSArray 和 NSDictionary 定义的对象。 Cocoa 的根类也遵循该协议,所以所有继承 NSObjects 的 objects 都有遵循该协议的特性。

nsproXY: nsproxy 是一个虚基类,它为一些表现的像是其它对象替身或者并不存在的对象定义一套 API。一般的,发送给代理的消息被转发给一个真实的对象或者代理本身 load(或者将本身转换成)一个真实的对象。nsproxy 的基类可以被用来透明的转发消息或者耗费巨大的对象的 lazy初始化。

6.传值通知&推送通知(本地&远程)

传值通知: 类似通知,代理,Block 实现值得传递
推送通知: 推送到用户手机对应的 App 上(主要是不再前台的情况),用户获得资源的一种手段。普通情况下,都是客户端主动的 pull。推送则是服务器端主动 push。
本地通知: local notification,用于基于时间行为的通知,比如有关日历或者 todo 列表的小应用。另外,应用 如果在后台执行,iOS 允许它在受限的时间内运行,它也会发现本地通知有用。比如,一个应用,在后台运行,向应用的服务器端获取消息,当消息到达时,比如下载更新版本的ᨀ示消息,通过本地通知机制通知用户。本地通知是 UIlocalnotification 的实例,主要有三类属性

  • scheduled time,时间周期,用来指定 iOS 系统发送通知的日期和时间;
  • notification type,通知类型,包括警告信息、动作按钮的标题、应用图标上的 badge(数字标记)和播放的声音;
  • 自定义数据,本地通知可以包含一个 dictionary 类型的本地数据。对本地通知数量限制,iOS 最多允许最近本地通知数量是 64 个,超过限制的本地通知
    被 iOS 忽略。

远程通知(需要服务器)。流程大概是这样的

  • 1> 生成 CertificateSigningRequest.certSigningRequest 文件
  • 2> 将 CertificateSigningRequest.certSigningRequest 上传进 developer,导出.cer 文 件
  • 3> 利用 CSR 导出 P12 文件
  • 4> 需要准备下设备 token 值(无空格)
  • 5> 使用 OpenSSL 合成服务器所使用的推送证书,一般使用极光/友盟推送,步骤是一样的,只是我们使用的服务器是极光的,不需要自己大服务器!

7.第三方库&第三方平台

第三方库:一般是指大牛封装好的一个框架(库),或者第三方给我们ᨀ供的一个库,这里比较笼统
第三方平台:指第三方ᨀ供的一些服务,其实很多方面跟第三方库是一样的,但是还是存在一些区别。
:AFN,ASI,Alomofire,MJRefresh,MJExtension,MBProgressHUD
平台:极光,百度友盟,Mob,环信

150道题更多面试内容
需要学习材料百度网盘链接地址,请到微信小程序搜索“斌雅资料”,序号:6,密钥:9876,查询资料获取

原文地址:https://blog.csdn.net/cxdnxs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐