1.xcode5和xcode7区别?
- xcode7没有Frameworks文件夹,xcode7内部会自动帮你导入一些常见的框架.
- xcode7多了LaunchScreen.xib,LaunchScreen.xib设置启动界面,并且能够肯定模拟器或者真机的真实尺寸,若是没有设置,默认4s的尺寸(320,480)
- xcode7没有pch文件
- xcode5当中也有info.plist,只不过它的名字很长.是工程的名称.
2.pch文件原理?
3.UIApplication常见功能?
- 设置应用提醒数字
- 设置连网状态
- 设置状态栏
- 跳转网页
4.程序完整启动流程?
- 1.执行Main
- 2.执行UIApplicationMain函数.
- 3.建立UIApplication对象,并设置UIApplicationMain对象的代理.UIApplication的第三个参数就是UIApplication的名称,若是指定为nil,它会默认为UIApplication.UIApplication的第四个参数为UIApplication的代理.
- 4.开启一个主运行循环.保证应用程序不退出.
- 5.加载info.plist.加载配置文件.判断一下info.plist文件当中有没有Main storyboard file base name,里面有没有指定storyboard文件,若是有就去加载info.plist文件,若是没有,那么应用程序加载完毕.
5.UIWindow是什么?
- UIWindow是一种特殊的UIView,一般在一个app中至少有一个UIWindow
- iOS程序启动完毕后,建立的第一个视图控件就是UIWindow,接着建立控制器的view,
- 最后将控制器的view添加到UIWindow上,因而控制器的view就显示在屏幕上了
- 一个iOS程序之因此能显示到屏幕上,彻底是由于它有UIWindow
6.手动建立窗口的步骤?
- 1.建立窗口,要有窗口显示,必需要有强引用.窗口也是控件,要想展现出来.必须得要有尺寸.
- 2.建立控制器
- 3.设置控制器为窗口的根控制器
- 4.显示窗口
7.makeKeyAndVisible作了哪些事情?
- 让窗口成为显示状态.
- 把根控制器的View添加到窗口上面.
- 把当前窗口设置成应用程序的主窗口
8.如何从从StoryBoard加载控制器?
- 加载指定的storyBoard
- 加载箭头所指向的控制器.
- 加载指定标识的控制器.
9.initWithNibName的加载过程?
- 若是没有指定名称.指定为nil,那么它就会去先加载跟它相同名称的Xib.
- 若是没有跟它相同名称的Xib,那么它就会再去加载跟它相同名称去点Controller的名字的Xib.- - 控制器的init方法会调用initWithNibName:方法.
10.LoadView 做用以及使用LoadView的注意点?
11.UIPickView是什么控件,基本用法怎样的?
- UIPickView选择控件,用来供用户选择一些城市等.它的基本用法与tableView基本类似,要设置数据源,代理, 让其展现数据
12.KVC底层实现?
- 拿字符串与当前类的属性进行匹配.若是匹配到,就给该属性赋值.
[flagItem setValue:obj forKeyPath:key];
- 1.会找有没有跟key值相同名称的set方法,若是有,就会调用set方法,把obj传入
- 2.若是说没有set方法.那么它会去找没有相同名称,而且带有下划线的成员属性,若是有就会给该属性赋值.
- 3.若是也没有带有下划线的成员属性,就看有没有跟它相同名称的成员属性,若是有就会给该属性赋值.
- 4.若是尚未跟它相同名称的成员属性,就会调用
setValue:(id)value forUndefinedKey:
- 5.若是没有实现setValue: forUndefinedKey: 就直接报错
13.导航控制器View的结构是怎样的?
- 一个专门存放栈顶控制器View的View
- 一个导航条,导航条的高度为44,Y值为20
14.导航push作了哪些事情?
- 当调用push方法时, 会把要push的控制器添加到导航控制器管理的栈中,把以前导航控制器中栈顶控制器View给移除,把当前栈顶控制器添加上去.
15.导航pop作了哪些事情?
- 当调用pop方法时, 会把要pop的控制器从栈里移除,把以前导航控制器中栈顶控制器View给移除,把当前栈顶控制器添加上去.
16.如何设置导航条的内容?
- 导航条的内容由导航控制器的栈顶控制器的NavigationItem决定.
17.导航控制器pop操做有哪些?
18.文本框如何拦截用户输入?
- 给指定的文件框,设置代理 ,实现代理方法.里面包括是否容许开始编辑,是否容许结束编辑,是否容许改变字符等等.
19.如何自定义键盘?
- 自定义键盘,要继承系统的UITextField,设置文本框的一个属性,该属性名称为inputView.这样就能够把键盘定义成本身要想的View.
20.导航控制器的做用?
- 导航控制器能够轻松的完成控制器之间的切换.其操做有push,pop等.
21.自动跳转与手动型跳转区别?
- 自动跳转:经过控件直接拖线的方式进行跳转
- 手动跳转:在跳转以前要去作一些处理工做. 必须得要执行
performSegueWithIdentifier: 才能跳转.
22.何时使用代理 ,代理的步骤?
- 当一个对象发生某一件事时,想要把本身的东西传给别人.或是通知别人作某事使用代理.
- 使用场景: 上下级之间,一般是它的上一级成为它的代理.
- 步骤:
- 1.定义协议
- 2.定义代理属性
- 3.在.m文件当中调用代理方法
- 4.设置代理
- 5.遵照协议
- 6.实现协议方法
23.ios当中存储方式有哪些?
- XML属性列表(plist)
- Preference(偏好设置)
- NSKeyedArchiver,只有遵照NSCoding协议的对象才可使用这种方式。
- SQLite
- Core Data
24.tableView性能优化
- 1.tableView的缓存机制.
- 2.在不等高Cell当中,提早计算Cell的行高.提早估一个行高.200-250
- 3.若是说Cell当中有圆形图片,图片不要用ImageView加载layer.corneadius裁剪去作.会形成离屏渲染. 用绘图Qurarzds裁剪,生成一张圆形的图片.
- 4.若是说图片的宽高,指定为小数点.会形成锯齿,形成锯齿就会致使离屏渲染
- 5.cell当中的ImageView的大小最好是跟UIImage是同样大,若是不同大 它会对UIImage作形变操做.cell当中展现都是小图.小图的大小跟ImageView 点击放大,是再去用大的ImageView加载大图.
- 6.作tableView的时候必定要用真机.
- 7.若是是从网络加载数据,必定要放到子线程(异步加载)当中作.
- 8.加载完毕的数据必定作本地缓存.
- 9.cell当中不要动态的添加子控件.通常都在建立时,就把要出现的Cell给添加进去,暂时不要显示的,可隐藏.
- 10.尽可能减小Cell内部子控件的个数.
- 11.若是控件很是多,把不须要与用户进行交互的控件.能过异步绘制出来.生成一张图片.把图片添加到cell当中
你的回复是个人动力 PDF2文件下载ios 原文:http://bbs.520it.com/forum.php?mod=viewthread&tid=2814xcode |