240 发简信
IP属地:山东
  • UICollectionView中Cell左右对齐、等间距

    最近在开发软件的时候被要求,要让UICollectionView上面的cell之间的距离固定,但是cell的宽度不一定,所以一行有几个cell其实不固定,跟cell中的lab...

  • Block详解——内存管理

    Block详解——内存管理 前言 在日常使用Block进行编码时,我们都会注意避免循环引用。这篇文章主要是分析我们在Block中使用__weak和__strong到底发生了什...

  • dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(interval * NSEC_PER_SEC)), dispatch_get_main_queue(), weakSelf.handler);
    这个方法执行之前,weakSelf就已经被释放了,体现不了weak-strong dance的作用啊

    深入理解 weak-strong dance

    weak-strong dance 简介 使用 Block 时可以通过__weak来避免循环引用已经是众所周知的事情: 这时handler持有 Block 对象,而 Bloc...

  • UIView生命周期详解

    UIView生命周期详解 View代码实现 一般情况 重复地移除再添加到相同的SuperView,willMoveToSuperview和didMoveToSuperview...

  • GPUImage源码解析(2)—— GPUImageContext

    GPUImageContext负责管理OpenGL context已经当前context处理任务用到的资源,包括GLProgram、CVOpenGLESTextureCach...

  • GPUImage源码解析(1)—— GLProgram

    GLProgram GLProgram的实现相对简单,没有与其他类产生依赖关系,主要封装了着色器与着色器程序的创建、编译、链接、使用和销毁。 GPUImage中负责创建GLP...

  • 120
    Objective-C 使用下标访问自定义类型的属性

    Objective-C 使用下标访问自定义类型的属性 OC容器类 在Objective-C中,可以通过下标来访问数组中的元素,如果数组是NSMutableArray类型的可变...

  • Objective-C 范型

    系统库范型 Objective C支持轻量级的范型。在编写自定义的范型类之前,我们先来看看Cocoa Touch的集合类(NSArray,NSDictionary,NSSet...

  • “编译器通过Runtime的消息机制在幕后完成创建数据、调用函数。”,编译器是负责创建数据和函数,但不是通过Runtime的消息机制。

    关于Objective-C Runtime看我就够了

    前言 Runtime是iOS开发者进阶必须学习的一个知识点。网上关于Runtime 有许多介绍,有深入有简单介绍,也有实际应用举例,但是都不够系统,相关的知识点得不到关联,对...

  • GPUImage简介

    GPUImage 概述 GPUImage是一个遵循BSD的iOS开源库,通过使用它可以为图片、实时视频和影片添加GPU加速的滤镜和其他特效。GPUImage支持部署在iOS ...

  • 120
    5分钟上手Mac效率神器Alfred以及Alfred常用操作

    前言 Alfred,想必大家就算没用过也耳闻过。Alfred是一个让你可以丢掉鼠标的神器。很多读者可能之前认为Alfred的学习成本高,或者感觉它太复杂,而望之却步。其实Al...

  • 120
    AFNetworking3.0源码分析-(1)概述

    AFNetworking作为现在iOS开发最常用的开源网络框架,其代码有很多值得我们分析学习的地方。本篇是对AFNetworking3.1.0的总体结构进行分析。 类结构 A...

  • iOS App 启动时间优化

    在用户打开App的时候,过长的等待时间会使用户陷入等待焦虑,对用户留存率产生不良影响,虽然精致的启动页能对等待焦虑有一定的缓解作用,但是最好还是尽可能地减少App的启动时间。...

  • 120
    iOS 如何优化项目

    前言 在项目业务趋于稳定的时候,开发完迭代需求后,我们可能会无所适从,进入一段空白期,但是对于攻城狮来说闲暇不是件好事,所以我们可能总想学点什么,却又没有头绪。这个时候我们就...