崔岚清的个人博客

集跬步至千里,积小流成江海


  • 首页

  • 分类

  • 标签

  • 归档

Swift内存模型与指针的使用

发表于 2018-09-21 | 分类于 iOS开发 |
一、前言我们在编写Objective-C和C代码时经常会用到指针,切换到Swift语言中来,虽然其可以无缝使用C语言指针,但是在语法上与OC和C还是有很大区别的。 Swift本身是内存安全的,只要确保所有变量在使用前都被正确地初始化,我们不必担心内存问题,因此,Apple官方不建议开发者直接操作内存,但是Swift还是为开发者提供了使用指针直接操作内存的方法,Swift中所有的指针类型都带有“Un ...
阅读全文 »

从一个BUG谈起,剖析objc_msgSend函数的底层实现

发表于 2018-08-14 | 分类于 iOS开发 |
一、引出问题 前段时间开发FLEX+Relative库(使用Category和Runtime实现将FLEX库扩展出可以查看UIView相对间距的功能)。开发完成后遇到了一个奇怪的BUG,模拟器与真机调试时行为不一致,模拟器上可以正常实现预期功能,但是在真机上却出现问题:程序展示的视图与实际选中的视图不一致。先看问题代码: 123456789101112131415- (void)updateRel ...
阅读全文 »

最长回文子串的4种解法(swift实现)

发表于 2018-06-03 | 分类于 算法, LeetCode |
一、问题子串:原字符串中任意个连续字符组成的子序列,长度小于等于原字符串回文:形如:”abba”, “abcdcba”等中间字符对称的文法最长回文子串:某个字符串中满足回文特性的最长子串 二、解法2.1 暴力查找最先也最容易想到的解决办法,由于用到了三重for循环,时间复杂度为O(N^3),空间复杂度为O(1)。 123456789101112131415161718192021222324252 ...
阅读全文 »

iOS页面优化经验总结

发表于 2018-05-11 | 分类于 iOS开发 |
一、前言 前段时间接到了一个页面优化任务,一个选座的页面,要求峰值支持100*100个座位,并提高页面滑动的流畅度、内存占用率和加载速度等指标前前后后做了一个月左右的时间,这里总结一下优化经验以供参考。 二、分析问题 1、该页面的问题所在之前该页面的是由一系列UIButton结合drawRect实现,在从服务器拉取到数据后,计算出每个座位的frame并在相应的位置创建一个button代表该座位,所 ...
阅读全文 »

RAC中@weakify、@strongify的原理以及如何避免block中的retain cycle

发表于 2018-04-14 | 分类于 iOS开发 |
1、block中的循环引用在iOS开发中,如果self持有block,在block中对self进行显式或隐式的引用,都会出现retain cycle而导致内存泄漏,比如: 123456self.someBlock = ^{ // 显式引用self [self doSomething]; // 隐式引用self,_someProperty为self的某个属性 _so ...
阅读全文 »
12

Cui Lanqing

一枚有梦想的程序猿

15 日志
2 分类
13 标签
© 2019 Cui Lanqing
本站访客数:
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4