1、简述push原理,push的证书和其他的有什么不一样?
第 一阶段:BeejiveIM服务器把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务 的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。
iOS push原理浅析
2. viewcontroller的一些方法的说明viewDidLoad, viewWillDisappear, viewWillAppear方法的 顺序和 作用?
viewDidLoad:在视图加载后被调用
viewWillAppear:视图即将可见时调用。默认情况下不执行任何操作
viewDidAppear:视图已完全过渡到屏幕上时调用
viewWillDisappear:视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
viewDidDisappear:视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
先执行viewDidLoad再执行viewWillAppear。
3. frame和 bounds的 区别 ,bound的大小改变frame 改变吗?
frame:描述当前视图在其父视图中的位置和大小。
bounds:描述当前视图在其自身坐标系统中的位置和大小。
改变。
4. sqlite中插入特殊字符的方法和接收到处理方法。
除’其他的都是在特殊字符前面加“/”,而 ’ -> ‘’ 。方法:keyWord = keyWord.replace(“/”,“//”);
5。谈谈你对数组和连表认识,还有你是怎么用他们的?
链表和数组的区别
数组需要一块连续的内存空间来存储,对内存要求比较高
链表通过指针,将一组零散的内存块串联起来使用
链表和数组的优缺点
时间复杂度
数组插入删除操作时间复杂度是O(n)
链表插入删除操作时间复杂度是O(1)
随机访问第k个元素
数组:O(1)
链表:O(n)
iOS - 链表、数组区别及常见算法
NSArray 用于对象有序集合(数组),初始化一个数组时,经常使用initWithObject 和 initWithObjects。没有s的表示使用一个指针初始化NSArray,初始化后,这个NSArray的实例只有一个数据,所以在调用没有s的函数的时候是不能以nil结束的;但是有s的就不一样了,哪怕只有一个数据,或者没有数据,必须使用一个nil结束。还有一个NSMutableArray可变对象数组,可以进行删除添加排序等一系列操作。
NSSet 用于对象无序集合,同数组相比,集合是一个无序的;不同元素的集合。数组中的元素可以重复,但是集合不同。
NSDictionary用于键值映射,key-value, key-value, … 一系列键值对。key(键)在整个dictionary是唯一的,通过key可以查询其对应的一个或多个value(值)。
6、冒泡算法
-(void)bubbleSorting2{
int count = 0;
NSMutableArray *array = [NSMutableArray arrayWithObjects:@3,@2,@9,@1,@6,@7,@4,@5,@8,nil];
NSLog(@"排序之前的数组===%@",array);
for (int i = 0; i< array.count -1; i++) {
BOOL isEnd = NO;//判断是否已排序完成
for (int j = 0; j < array.count -1 -i; j++) {
count++;
if ([array[j] integerValue] >[array[j+1] integerValue] ) {
isEnd = YES;
[array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
if (!isEnd) {
break;
}
}
NSLog(@"排序后的数组===%@",array);
NSLog(@"循环次数%d",count);
}
//运行结果
2021-03-04 16:38:08.899639+0800 test[16965:252277] 排序后的数组===(
1,
2,
3,
4,
5,
6,
7,
8,
9
)
2021-03-04 16:38:08.899709+0800 test[16965:252277] 循环次数26
冒泡算法优化过程