蓝懿 ios技术交流和心得分享 11.30
来源:互联网 发布:淘宝卖家开通花呗 编辑:程序博客网 时间:2024/05/05 21:04
今天老师教了我们新的内容 多线程:
数据持久化的方式:1.归档 2.UserDefault 3.CoreData 4.sqlite
多线程:
1.不能在主线程中写耗时的操作 因为会导致主线程中系统代码晚执行 界面就会出现卡死现象严重影响用户体验度
2.不能在子线程中修改页面 要回到主线程中去修改
耗时操作有哪些:1.大量运算 2.处理大文件 3.网络相关 4.睡眠代码
开启线程的方式有三种:
1.NSThread:
//开启子线程
[NSThreaddetachNewThreadSelector:@selector(newThreadMethod:)toTarget:selfwithObject:@"abc"];
//让当前线程睡眠的代码
[NSThread sleepForTimeInterval:3];
UIView *v = [[UIViewalloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
v.backgroundColor = [UIColorredColor];
[self.view addSubview:v];
-(void)newThreadMethod:(NSString *)s{
for (int i=0; i<<span se-mark="1">10; i++) {
[NSThreadsleepForTimeInterval:.5];
NSLog(@"%@-%d",s,i);
UIView *v = [[UIView alloc]initWithFrame:CGRectMake(100, i*50, 40, 40)];
v.backgroundColor = [UIColorblueColor];
//把修改页面的代码回到主线程中去执行
[selfperformSelectorOnMainThread:@selector(updateUI:) withObject:v waitUntilDone:NO];
}
}
-(void)updateUI:(UIView*)v{
[self.view addSubview:v];
}
2.GCD: 中央任务分发 C语言支持 执行效率高 代码简洁
//线程队列:1.串行队列 2.并行队列
//创建串行队列
dispatch_queue_t myQueue = dispatch_queue_create("queue", NULL);
//创建并行队列
dispatch_queue_t myQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//开启一个线程在某个队列中
dispatch_async(myQueue, ^{
for (int i=0; i<<span se-mark="1">5; i++) {
[NSThreadsleepForTimeInterval:.5];
NSLog(@"a-%d",i);
UIView *v = [[UIView alloc]initWithFrame:CGRectMake(100, i*50, 40, 40)];
v.backgroundColor = [UIColorblueColor];
//在主线程中执行某段代码
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:v];
});
}
});
3.NSOperation:可以控制同时执行的线程数量 可以控制线程之间的关系 没有自有的返回主线程方法,可以用方法1的或2的;
一、创建子线程队列
NSOperationQueue *queue = [[NSOperationQueuealloc]init];
// 获取主线程队列方式
// NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
//设置最大线程同时执行数量
[queue setMaxConcurrentOperationCount:2];
二、创建子线程
//子线程创建方法一
NSBlockOperation *op1 = [NSBlockOperationblockOperationWithBlock:^{
for (int i=0; i<<span se-mark="1">5; i++) {
[NSThreadsleepForTimeInterval:.5];
NSLog(@"a-%d",i);
}
}];
//子线程创建方法二
NSInvocationOperation *op2 = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(run) object:nil];
//设置线程间的关系
[op1 addDependency:op2];
三、把创建的子线程添加到子线程队列
[queue addOperation:op1];
[queue addOperation:op2];
}
-(void)run{
for (int i=0; i<<span se-mark="1">5; i++) {
[NSThreadsleepForTimeInterval:.5];
NSLog(@"b-%d",i);
}
}
学习ios 重要还是要理清楚思路 在做或者看老师代码的时候 自己多想想为什么 不要自己看着就抄 另外还是要推荐一下 蓝懿IOS这个培训机构 和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!
写博客第五十一天;
QQ:565803433
- 蓝懿 ios技术交流和心得分享 11.30
- 蓝懿 iOS 技术交流和心得分享 11.19
- 蓝懿 iOS 技术交流和心得分享 11.21
- 蓝懿 iOS 技术交流和心得分享 11.23
- 蓝懿 iOS 技术交流和心得分享 11.25
- 蓝懿 iOS 技术交流和心得分享 11.26
- 蓝懿 iOS 技术交流和心得分享 11.27
- 蓝懿 iOS 技术交流和心得分享 11.28
- 蓝懿 ios技术交流和心得分享 11.29
- 蓝懿 iOS 技术交流和心得分享 12.1
- 蓝懿 iOS 技术交流和心得分享12.2
- 蓝懿 iOS 技术交流和心得分享12.4
- 蓝懿 iOS 技术交流和心得分享 12.5
- 蓝懿iOS 技术交流和心得分享 12.8
- 蓝懿ios 技术交流和心得分享 12.9
- 蓝懿 iOS 技术交流和心得分享 12.11
- 蓝懿ios技术交流和心得分享12.14
- 蓝懿ios技术交流和心得分享12.15
- ubuntu和windows间互传文件
- margin-top越界以及所有子元素浮动后父元素高度为0且影响后续元素的问题。
- 云计算的三种服务模式:IaaS,PaaS和SaaS
- 牛客堂刷题(常见面试题精讲)之最长回文序列
- WebKit之HTMLTreeBuilder类的解析框架
- 蓝懿 ios技术交流和心得分享 11.30
- java学习笔记之多线程(1)之创建线程
- Android 下载网络图片
- 黑马程序员——详细介绍Java 泛型的理解
- leetcode 258 Add Digits C++
- PHP上传图片问题
- Git系列二——Git快速上手
- java的接口回调
- Oracle解析流程