同步:代码依次执行,一个人执行多个任务,也是依次执行。一个人在同一时间只执行一个任务
异步:可以同时执行多个任务
进程:指在系统中运行的应用程序,每个进程都是独立的,都有独立的且安全的运行空间
线程:一个进程可以有多个线程,但只有一个主线程。进程的任务都是在线程里面完成的。
进程,线程与多线程之间的关系?
进程=公司 线程 = 员工 多线程 = 老板
多线程可以解决程序阻塞问题,也可以提高程序的执行效率
自动释放池常见面试题代码
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #ffffff }
span.s1 { color: #c2349b }
span.s2 { }
span.s3 { color: #8b84cf }
span.s4 { color: #00afca }
span.s5 { color: #e44347 }
for (int i = 0; i < 100000; ++i) {
NSString *str = @"Hello World";
str = [str stringByAppendingFormat:@"- %d",i]; //字符串拼接
str = [str uppercaseString]; //将字符串替换成大写
}
如果循环的次数过大,会出现什么问题?该怎么解决?
会出现内存溢出,循环内部创建大量的临时对象,没有被释放
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Courier; color: #333333; background-color: rgba(128, 128, 128, 0.047) }
span.s1 { }
每次循环都将上一次创建的对象release
for (int i = 0; i < 100000; ++i) {
@autoreleasepool{
NSString *str = @"Hello World";
str = [str stringByAppendingFormat:@"- %d",i];
str = [str uppercaseString];
}
}
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC"; color: #4dbf56 }
span.s1 { }