What is Life But One Chanllege After Another

RunTime解析--Category(分类)实现

在日常的开发中,我们经常用到分类,用来给一个类添加扩展,包括对象方法、类方法、当然我们还可以通过关联对象的方式给分类添属性。但是这中间的过程是如何实现的呢?下面我们来做一个详细的解释。

RunTime解析--Category(分类)实现

SideTable结构

iOS开发者都知道,当一个对象被释放时,所有对这个对象弱引用的指针都会释放并置为nil,那么系统是如何存储这些弱引用对象的呢?又是如何在一个对象释放时,将这些指向即将释放对象的弱引用的指针置为nil的呢?下面我们通过分析SideTable的结构来进一步了解内存管理的弱引用存储细节。

SideTable结构

内存管理之Tagged pointer

iOS开发者对引用计数这个名词肯定不陌生,引用计数是苹果为了方便开发者管理内存而引入的一个概念,当引用计数为0时,对象就会被释放。但是,真的是所有对象都是这样吗?

内存管理之Tagged pointer

retain和release实现探究

前面一篇文章,我们讲到了系统为了优化数字字符串等类型的数据存储新增了一种NSTaggedPointer类型,同时我们还发现,isa指针在经过优化后,提供了19个bit位用来存储引用计数的个数。但是如果超出了这个限制呢?

retain和release实现探究

Xcode之断点调试

Xcode这个开发工具的使用相信每一个iOS开发者都已经可以熟练使用,但是要说到所有功能都详细了解,想必人数不多,这篇文章主要介绍xcode的断点调试功能。

Xcode之断点调试

组件化设计方案

随着多个功能需要在多个业务线短时间内实现功能同步,我们需要将新增功能模块和已有的功能模块逐步组件化,以达到多个业务线间可快速同步的效果

组件化设计方案

基于响应者链条的事件传递方式

随着业务越来越负责,APP中的页面也变得越来越负责,层级变的越来越深,不论项目是MVC还是MVVM架构,我们都倾向于将事件的处理放到控制器中。随着层级越来越复杂,事件处理方法越来越多,为此我们的解决方案一般都是将部分处理事件放到viewmodel中或者给控制器添加分类。但这些方法都不能避免事件一层层的传递。那么有没有更好的方法呢?

基于响应者链条的事件传递方式

iOS webP.framework制作

相信目前大部分APP都已经支持了WebP格式的图片,下面我们通过这种图片简单介绍下WebP格式图片的优点。

iOS webP.framework制作

无线循环的滚动视图方案

我们近期的项目中有两种场景分别是视频流和直播间,由于项目初期直播间或者视频量较少。因此在用户滑动切换直播间或者视频时需要我们做到可以循环滑动。

无线循环的滚动视图方案

滚动视图的ReloadData和VisibleCells

作为UIScrollView的子类UITableViewUICollectionView是我们平时开发中最常使用的两个列表控件。同时在一些复杂的页面中也经常嵌套使用,同时由于对其有些方法理解的不够深入,很容易导致一些比较诡异的问题。

因此这里单独写一篇文章来介绍这两个常用控件中的几个常用的方法,希望可以加深大家对UITableViewUICollectionView的理解。

滚动视图的ReloadData和VisibleCells