此处crash是因为sema被销毁的时候还在被使用,系统判断sema是否被使用的标志为sema被销毁时的值是否与初始化的值相同。我们可以看一下堆...
setValue: forKey是NSMutableDictionary的一个扩展方法,当传入的value为nil时为调用removeObjec...
touch事件的传递: 在A视图上添加一个B视图,B视图上添加C视图,当我们touch C视图时,系统会从最底层的父视图开始检索,也就是先检索到...
一般展示数据的页面都有一个上拉加载更多的功能,当请求下来的数据添加到数据源之后,我们需要进行刷新界面,这时如果使用reloadData会比较消耗...
dispatch_semaphore_t可以阻塞线程 dispatch_semaphore_t的使用场景:有三个界面A、B、C,A界面上有一个按...
当我们已经上线了一个稳定的版本,代码在master主干上面,后续我们要开发新的功能会创建一个Dev的分支,在这个分支上进行新功能的开发,我们还要...
当我们在git上初始化项目时,都会忽略一些不必要的文件,比如pods库。在开发过程中可能我们创建了自己的私有库,或者修改了三方库,这时我们需要自...
- (void)addCenterBtn{ UIImage * image = [UIImage imageNamed:@"money"]; U...
notification的方法响应线程取决于发送notification的线程。在子线程发送通知,响应方法的线程就是子线程,跟监听通知的线程没有关系