iOS知识点2
2018-02-24 16:05
148 查看
1.block的实质是什么?一共有几种block?都是什么情况下生成的? block:本质就是一个object-c对象. block:存储位置,可能分为3个地方:代码区,堆区、栈区(ARC情况下会自动拷贝到堆区,因此ARC下只能有两个地方:代码区、堆区) 代码区:不访问栈区的变量(如局部变量),且不访问堆区的变量(alloc创建的对象),此时block存放在代码区。 堆区:访问了处于栈区的变量,或者堆区的变量,此时block存放在堆区。–需要注意实际是放在栈区,在ARC情况下会自动拷贝到堆区,如果不是ARC则存放在栈区,所在函数执行完毕就回释放,想再外面调用需要用copy指向它,这样就拷贝到了堆区,strong属性不会拷贝、会造成野指针错区。
2.为什么在默认情况下无法修改被block捕获的变量? __block都做了什么? 默认情况下,block里面的变量,拷贝进去的是变量的值,而不是指向变量的内存的指针。 使用__block修饰后的变量,拷贝到block里面的就是指向变量的指针,所以我们就可以修改变量的值。
3.造成内存泄漏的可能的原因? 第三方框架不正当使用。 block,delegate,NSTimer循环使用。 非oc对象的内存处理。 地图类处理。 大次数循环内存暴涨。 非oc对象的释放: 例如使用CGImageRelease(ref)方法释放内存; CoreFoundation框架下的某些对象或者变量需要手动释放,c语言中malloc需要free; 地图类内存释放: 在使用完毕之后注意将地图及其相关代理释放,地图中大头针需正确复用,并使用完成之后清空标注;
相关文章推荐
- iOS架构小知识点
- iOS开发一路走来看到,好奇,好玩,学习的知识点记录
- IOS小知识点3之IOS面试宝典(200例)
- 有关View的几个基础知识点-IOS开发
- IOS知识点归纳--说白了就是类库归类
- iOS知识点(6)
- iOS开发面试知识点总结
- IOS知识点总结 一 (NSString)
- 根据分析查看相关知识点分析iOS 三种录制视频方式
- iOS知识点汇总
- IOS的一些面试知识点
- iOS 知识点大总结(转)
- iOS月薪10K知识点大总结
- ios状态栏调整 简单动画的知识点
- iOS琐碎知识点 UIScrollView(ViewPager) 、UIFont、exclusiveTouch
- iOS小知识点(四)网络篇
- iOS应该具备知识点
- C语言 ---- 数组 iOS学习-----细碎知识点总结
- ios零碎知识点
- iOS项目开发中的知识点与问题收集整理