最近越来越发觉,自己做了这么久iOS开发,似乎都是在瞎玩,回望这一路写的App,写的代码,以及上线的App,又有几个自己真的非常满意的?
说道这里,不得不提的是:我相信不止我一个人有这种感触,代码写久了,自己都不知道自己在写撒,就连上线都是个意外。
这一路走来我一直在总结,也在回望,到底自己哪里出了问题,终于发现:终究是自己不敢面对而已,底层不了解,只知道敲。
因为换了电脑,换了工作,换了新的环境,也换了一个不一样的心情重新开始探索之路,所以之前的博客地址也停止更新了,如果你对iOS相关知识感兴趣或者有什么疑问和建议可以联系我,或者直接在下面评论,
本来打算这个博客中不会再写iOS的东西,但是最近一直上班,也找了一段时间公司,总之感触不少,现在这个行情,大家都懂的。
前段时间也整理了一些东西,我相信值得一看。
1 | 原则:没有强指针指向对象,对象就会被释放。 |
MRC-ARC
1 | ARC:LLVM3.0(iOS5,Xcode4) |
关于循环
1 | weak:循环引用,自身强引用,IBOutlet。非拥有,不保留也不释放,置nil,weak必须用于OC对象,assign非OC对象 |
关于内存
1 | 内存布局:没有多继承,所以布局简单 |
关于线程
1 | 界面线程维护自己的线程池。自己创建的线程数据,需要创建线程的内存池。 |
常见状态管理
1 | 野指针:指针变量没有初始化,指向的空间被释放。调用方法报异常,崩溃。release后,地址nil,OC中没有空指针异常 |
对象关系
1 | 集成: |
autorrelease(pool)/垃圾回收机制
1 | autorrelease:把该对象放入自动释放池,自动释放池释放时,内部对象引用计数-1。 |
自动释放池
1 | 自动释放池: |
关键字
1 | block中多次使用weakSelf(延迟操作,导致取不到弱指针),可以block种先使用strongSelf,防止执行是weakSelf意外释放,对于非ARCweak改为block就可以 |
其他总结
1 | 通过Observer监听RunLoop状态,一旦监听到RunLoop即将进入休眠等状态,就释放自动释放池。 |