Stay weird. Stay different.

0%

  • 第十三条:用“方法调配”技术调试“黑盒方法”

    类的方法列表会把选择子的名称映射到相关的方法实现上,使得动态消息能够根据此找到对应的方法,这些方法均以函数指针的形式来表示,其原型如下:

    Read more »

  • 第九条:以类族模式隐藏实现细节

    类族可以隐藏抽象基类的实现细节,其中IOS中常用的UIButton就是使用的这种模式。

    1
    + (UIButton *)buttonWithType:(UIButtonType)type;

    在具体实现中,会根据type的不同,调用不同子类的初始化方法。

    在具体的应用中,也可以使用这种模式,通过一个通用的基类创建不同的子类对象。

    1. 声明枚举类型

      1
      2
      3
      4
      5
      typdef NS_ENUM(NSUInteger, EOCEmployeeType) {
      EOCEmployeeTypeDeveloper,
      EOCEmployeeTypeDesigner,
      EOCEmployeeTypeFinance
      }
    2. 声明工厂方法

      1
      + (EOCEmployee *)employeeWithType:(EOCEmployeeType)type;
    3. 实现工厂方法

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      + (EOCEmployee *)employeeWithType:(EOCEmployeeType)type {
      switch (type) {
      case EOCEmployeeTypeDeveloper:
      return [EOCEmployeeTypeDeveloper new];
      break;
      case EOCEmployeeTypeDesigner:
      return [EOCEmployeeTypeDesigner new];
      break;
      case EOCEmployeeTypeFinance:
      return [EOCEmployeeTypeFinance new];
      break;
      }
      }
Read more »

Block平常编程中经常用,对于Block语法感觉很怪异,有一些细节总是想不起来,今天正好看到了别人写点Block用法很巧妙,特意来总结一下。

Read more »

  • 第五条:用枚举表示状态,选项,状态码

    1. 应该用枚举来表示状态机的状态,传递给方法的选项以及状态码等值,给这些值起个易懂的名字。
    2. 如果把传递给某个方法的选项表示为枚举类型,而多个选项又可以同时使用,那么就将各选项定义为2的幂,以便通过按位操作将其组合起来。
    3. NS_ENUMNS_OPTIONS宏来定义枚举类型,并指明其底层数据类型。

      1
      2
      3
      4
      5
      typedef NS_ENUM(NSUInteger, EOCConnectionState) {
      EOCConnectionStateDisconnected,
      EOCConnectionStateConnecting,
      EOCConnectionStateConnected
      }
      1
      2
      3
      4
      5
      6
      typedef NS_OPTIONS(NSUInteger, EOCPermittedDirection) {
      EOCPermittedDirectionUP = 1<<0,
      EOCPermittedDirectionDown = 1<<1,
      EOCPermittedDirectionLeft = 1<<2,
      EOCPermittedDirectionRight = 1<<3,
      }
    4. 在处理枚举类型的switch语句中不要实现default分支。

Read more »

工欲善其事,必先利其器。作为一个程序员好用的开发工具是十分重要的,下面总结下我日常使用的开发工具和软件,以防以后换了电脑还要一个个的找。

Read more »