小知识点-(面试)
1>while 和 do while区别
while语句是先测试条件再执行语句,条件不符后终止;
do while语句是先执行语句再测试条件,条件不符后终止,所以do while循环至少执行一次。
2>URL参数拼接
在URL后面拼接参数,用问号?隔开。如果有多个参数,用&隔开。
3>UI、ID、UE和GUI这些都是什么?
UI(User Interface)
用户界面设计,是指对应用软件的操作逻辑、人机交互、界面的整体设计。从20 世纪80 年代起,用户界面设计成为了计算机科学的正式学科。在设计理念上,UI 设计不仅是让软件变得有个性、有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。
ID(Interaction Design)
交互设计,又称互动设计,它考虑的是人、环境与设备的关系和行为,以及传达这种行为的元素的设计。这个解释有点难懂。简单地说,我们进行交互设计,就是为了让产品更易用、有效,让人使用产品时感到舒适。同时,它需要了解用户和他们的期望,了解用户在同产品交互时彼此的行为,以及"人"本身的心理和行为特点。交互设计还涉及人体工程学、心理学、生物学等多个学科,以及与多领域人员的沟通。
UE(User Experience)
用户体验设计,它要求设计师能够全面地分析和体察用户在使用某个系统时的感受。他的工作从开发的最早期开始,并贯穿始终。目的是保证用户对产品的体验有正确的预估,了解用户的真实期望和目的,并对功能核心设计进行修正,保证功能核心同人机界面之间的协调
GUI(Graphical User Interface)
图形用户界面设计,是指针对采用图形方式显示的操作环境用户接口进行设计。其实就是界面美工,只关心界面的美观和有关视觉方面的设计工作。
4>类别的作用及继承和类别的区别
类别: 1.在不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改 2.如果类别和原来类中的方法名产生冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级. 类别的作用: A.将类的实现分散到多个不同文件和多个不同框架中 B.创建私有方法的前向引用 C.向对象添加非正式协议 继承:可以增加,修改或者删除方法,并且可以增加属性.
文件夹的两种方式的区别 1.实体文件夹的创建 使得目录比较明朗 并且在XCode里面.h和.m文件还有资源图分类非常明确 2.直接在目录下右键New Group创建的文件夹从目录看也很明朗 但是在Xcode文件夹里面确实非常混乱。
5.NSUInteger和NSInteger区别
NSUInteger是无符号的即没有负数,NSInteger是有符号的
6.iPhone设备IMEI和IMSI,UDID
IMEI:设备的唯一串号 IMSI :手机卡的唯一串号
查看iPhone设备的UDID
1.插上iPhone设备,打开Xcode
2.点击上边菜单栏-window- devices
3.选择你的设备—identifier
7.Xcode中,文件名后小方框中的A(M或者C)代表的意思?
表示在版本控制中,自上一次提交以来,文件做了修改。一般只有在带有版本控制的项目代码中才会显示,也就是说你的项目使用了SVN、GIT等工具后,会在Xcode中识别出来。
/* 'A' 新增 'D' 删除 'M' 修改 'R' 替代 'C' 冲突 'I' 忽略 '?' 未受控 '!' 丢失,一般是将受控文件直接删除导致 "M" = Locally modified "U" = Updated in repository "A" = Locally added "D" = Locally deleted "I" = Ignored "R" = Replaced in the repository “–” "=" The contents of the folder have mixed status; display the contents to see individual status "?" = Not under source control 这些标记跟你使用的代码托管工具或者xcode自带的svn代码托管工具有关,怎样消除: 1、代码中 某文件后面有 “M” 标记,表示该文件已被修改,需要 commit. (右键该文件 -> source control -> commit selected file...) 2、代码中 某文件后面有 “A” 标记,表示该文件是新添加的,已受SVN管理,需要 commit. (右键该文件 -> source control -> commit selected file...) 3、代码中 某文件后面有 “?” 标记,表示该文件是新添加的,并且脱离了SVN的管理,首先需要add,然后 commit. (右键该文件 -> source control -> Add,这样该文件的标记就变为 “A”,然后在 commit) 4、代码中 某文件后面有 “D” 标记,表示该文件在服务器上已被删除,这时update的话,可删除本地的文件。 5、代码中 某文件后面有 “C” 标记,表示该文件与服务器的文件冲突。 */
8.instancetype和id的区别
不同点:
1、instancetype 可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。
2、instancetype只能作为返回值,id可以作为参数
9.推送原理
10.通知小结:
发送通知:postNotificationName
接收通知:两种
*addObserver
*addObserverForName,返回观察者,保存起来,在对象销毁的时候移除
注意点:
一定要移除通知
线程问题:
监听通知代码必须在主线程
发出通知可以在子线程,而且接收到通知调用方法也是子线程.
监听到通知就会调用
异步:监听通知 主线程:发出通知 接收通知代码在主线程
主线程:监听通知 异步:发出通知 接收通知代码在异步
注意:在接收通知代码中 可以加上主队列任务
总结:接收通知代码 由 发出通知线程决定
11.frame和bounds区别
// center redView.center = self.view.center; // size CGRect frame = redView.frame; frame.size = CGSizeMake(200, 200); redView.frame = frame; // 如果size,从frame取出来 先设置size,再设置center // 如果size,从bounds取出来,就不用考虑center和size区别 frame:以父控件左上角为原点 bounds:以自己的左上角为原点,bounds x,y永远为0(🙅) frame和bounds都是用来描述一块区域 frame:描述可视范围 bounds:描述可视范围在内容的区域 所有的子控件都是相对于内容 bounds:修改内容原点 相对性:可视范围相对于父控件位置永远不变 可视范围相对于内容,位置改变
12.什么时候使用Weak和assign
ARC:才有weak
weak:__weak 弱指针,不会让引用计数器+1,如果指向对象被销毁,指针会自动清空
assgin:__unsafe_unretained修饰,不会让引用计数器+1,如果指向对象被销毁,指针不会清空
/* 1.weak 1> OC对象 2.assign 1> 基本数据类型 2> OC对象 3.strong 1> OC对象 4.copy 1> NSString * 2> block 5.使用weak和assign修饰OC对象的区别 1> 成员变量 1) weak生成的成员变量是用__weak修饰的,比如XMGCat * __weak _cat; 2) assign生成的成员变量是用__unsafe_unretained修饰的XMGCat * __unsafe_unretained _cat; 2> __weak和__unsafe_unretained 1) 都不是强指针(不是强引用),不能保住对象的命 2) __weak : 所指向的对象销毁后,会自动变成nil指针(空指针),不再指向已经销毁的对象 3) __unsafe_unretained : 所指向的对象销毁后,仍旧指向已经销毁的对象 */
13.collection View闪退
14.autoreleasepool和 runloop之间的关系
15.僵尸对象崩溃查找
僵尸对象:已经被回收的对象,或者说对象所对应的内存地址已经不可用的对象称为僵尸对象。僵尸对象不可用
16.Ⅺib和代码的看法
17.runtime相关的运作数组读取
18. cocopods的命令 pod install做了什么操作
19.持久化数据存储有哪些优缺点分别是什么
20. block为啥用copy实现
21.UIbutton在不改变sdwebimage如何释放缓存
22.组件化