HTTP的POST和GET区别?
http:Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。
- 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
- 根据HTTP规范,POST表示可能修改变服务器上的资源的请求。
总结:GET是向服务器发索取数据的一种请求,而POST是向服务器提交数据的一种请求
使用atomic一定是线程安全的吗?
- 这个问题很少遇到,但是答案当然不是
- atomic在set方法里加了锁,防止了多线程一直去写这个property,造成难以预计的数值
总结:atomic有个很大的问题是很慢,要比nonatomic慢20倍。当然最后建议这种数值数值变化可以让服务器来做
数据库建表的时候索引有什么用?
有什么用 :数据库中的索引使您可以快速找到表或索引视图中的特定信息。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过创建设计良好的索引以支持查询,可以显著提高数据库查询和应用程序的性能。索引可以减少为返回查询结果集而必须读取的数据量。索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性
冒泡算法思想
含有n个元素数组原则上要进行n次排序,从第一个数开始,依次比较前一个数与后一个数的大小。如果前一个数比后一个数大,则进行交换。一轮过后,最大的数将会出现称为最末位的数组元素。第二轮则去掉最后一个数,对前n-1个数在按照以上步骤找出最大数,该数将成为倒数第二的数组元素
具体代码如下:
NSMutableArray *number = [NSMutableArray arrayWithObjects:@"53",@"47",@"34",@"98",@"23", nil];
NSLog(@"排序前:%@",number);
//比较的趟数
for (int i = 0; i < 5-1; i++) {
NSLog(@"\n第%d次:%@",i+1,number);
//比较的次数
for (int j = 0; j < 5-1-i; j++) {
if ([number[j] integerValue] > [number[j+1] integerValue]) {
//根据比升序排序
NSInteger temp = [number[j] integerValue];
number[j] = number[j+1];
//将string转化成对象
number[j+1] = [NSString stringWithFormat:@"%ld",temp];
}
NSLog(@"\n第%d次%d趟:%@",i+1,j+1,number);
}
}
NSLog(@"排序后:%@",number);
}
iOS里如何做数据持久化?
所谓数据持久化,就是将数据保存在硬盘当中,使得数据可以在应用程序启动后继续访问之前保存的数据。又以下几种方式:
- plist文件(例:天气城市列表)
- sqlite 数据库
- coredata 苹果自带数据库 (封装了sqlite数据库,使用对象对sqlite进行操作)
- NSUserDefaults(preference 偏好设置)轻量保存数据
- NSKeyeArchiver(归档)
Objective-C的类可以多重继承吗? 可以实现多个接口吗?category是什么?
Objective-C不能多重继承;可以实现多个接口,通过多个接口可以实现多重继承;category是类别,一般情况用分类好,用category仅对本类有效。
#import 跟 #include的区别?@class呢?#import" " 跟 #import< >有什么区别?
- import是oc导入头文件的关键字
- include是c/c++导入头文件的关键字
- @class是告诉编译器某个类的申明,当执行时才去查看类的实现文件,可以解决头文件的相互包含
- import< >是用来包含系统文件头文件
- import" "是用来包含用户头文件
什么情况下使用weak和assign,有何不同
- assign是指针赋值,不对引用计数操作,使用之后如果没有设置nil,可能就会产生(野)指针
- weak一旦不进行,则不会再使用,就不会产生野指针
项目里什么时候选择GCD,什么时候选择NSOperation项目中使用
- NSOperation的优点是对线程的高度抽象,在项目中使用它,使项目结构更好,子类化NSOperation的设计思路,使具有面向对象的优点(复用,封装),使得线程在项目中使用简单,简易在复杂项目中使用
- GCD的优点是使用起来非常简单、易用对于不复杂的多线程操作,会节省代码量,而block参数使用,使代码更易读
UIView和CALayer的关系
UIView是依赖于CALayer提供的内容,CALayer依赖于UIView提供的界面绘制内容。CALayer是这一切的基础,如果没有CALayer,UIView也不会存在;UIView是一个特殊的CALayer实现,添加了响应事件能力
结论:UIView来自CALayer,高于CALayer,UIView所有特性来源于CALayer的支持
沙盒
- 应用程序可以在自己的沙盒里面运作,但是不能访问其他的应用程序沙盒
- 应用程序之间不能共享数据,沙盒里面文件不能被复制到其他文件中
- 沙盒有三个目录文件夹
- Documents:一般应该把应用程序的数据写到这里,用于存储应用程序数据
- Library:下有两个文件夹:
- Caches存储应用程序再次启动所需的信息
- Preferences包含应用程序偏好设置文件
- Temp:存放临时文件,即应用程序再次启动不需要的文件
连接静态库
静态库是程序代码的集合,共享代码的一种方式,静态库是闭源形式的存在的.a和.framework连接时,静态库文件会被复制到可执行文件中,被多次使用就会有冗余拷贝,相当于java中的jar包,把一类编译到一个包中
打包程序
在开始将程序提交到App Store之前,需要一个App Store账号,一个有效的发布证书,以及app描述文件
在itcunesconnect网站上,创建app应用,设置对应信息,上传app打包文件提交等待审核
MVC设计模式
顾名思义:Model、View、Controller
优点:
- 开发人员只用关注整层结构中某一层
- 降低层与层之间的依赖
- 降低层与层之间的依赖
- 利于各层逻辑的复用
缺点:降低了系统性能,如不采用分层式结构,很多业务可以直接访问数据库获取数据,现在必须通过中间层来完成
代理的作用
代理的目的是改变或传递控制链。允许一个类在某些特定时候通知到其他类,而不需要获取到那些指针,以减少框架的复杂度
网友评论