1、关键字static
变量只能分配一次内存,不论对象创建多少次
2、变量constant,与define 申明常量的区别
常量作用:在内存始终存在,防止意外修改常量的值。
区别:使用频繁用constant ,节约内存
define是替换,没调用一次,就会创建一次对象
3、在多线程中如何使用数据库?
使用FMDatabaseQueue处理,
4、FMDatabaseQueue的同时插入多条数据的处理顺序?
串行 异步
5、Bundle versionsstring, short, Bundle version各用来干什么,两者之间又联系么?
没有联系
Bundleversions string, short 版本名字,显示在程序中给客户展示
Bundleversion 版本号,用来处理app更新
6、解释下循环引用,block块如何避免循环引用?
循环引用:
a对象创建并引用了对象b;
b对象创建并引用了对象c;
c 引用了对象b;
此时b对象的引用计数为2,c对象的引用计数为1。当a对象释放时,取消对b对象的引用,此时b对象的引用计数为1,c对象的引用计数为1.b,c对象将不会释放,造成内存泄露。
Block块避免循环应用:块内访问外部实例变量,使用weak指针指向
7、谈谈iphone6 iphone6+的适配方案
图片:方案一: ipadmini@1x iphone5 iphone6@2x iphone6+@3x
方案二:矢量图(苹果自动生成各个图片,不用自己生成)
各个屏幕的像素:iphone5568 320 iphone6 667*375 iphone6+736*434
屏幕适配方案:autolayout(IOS6.0以后) 第三方库:Masonry
8、事件的传递顺序
(1)、从上到下:从子视图到父视图
(2)、userInteractionEnabled 默认是YES ,如果设置为NO则不响应用户事件,并且把当前控件从事件队列中删除。也就是说设置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subview都无法响应事件。
(3)子视图和父视图同时响应一个时间的方法
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
{
[super touchesBegan:toucheswithEvent:event];
NSLog(@"SecondViewtouchesBegan");
}
9、编码规范
1、熟悉业务,全面了解各种可能性 再编码
2、编码之后 要根据业务的不同分支自测
3、修改代码,要把整体的逻辑都找出来,看看改的一点会不会影响到全局(教训:checkregist更改好,业务没有考虑全,影响到logo ,password等问题)
10、app上传到appstore的流程?苹果的审核周期?app提交苹果审核有哪些需要注意的地方?
流程:itunesconnect创建应用 --- xcode打包应用-----上传
审核周期:初次审核时间长,版本迭代时间短,没有具体的答案
注意的地方:document文件夹不能存放临时文件
不能遮盖苹果的电池栏
等等