美文网首页iOS点点滴滴程序员ios学习
【objc-zen-book】4.Category &

【objc-zen-book】4.Category &

作者: ForeverYoung21 | 来源:发表于2015-09-24 07:52 被阅读157次

    这个小系列是从 "Zen and the Art of the Objective-C Craftsmanship"中 进行的摘抄,共分成6篇,大部分是讲代码风格及美化,偶尔看看也不错。


    Category

    1. category 方法前加上自己的小写前缀以及下划线。(真的很丑,但是苹果也推荐这样做)

      - (id)zoc_myCategoryMethod
      

      这是非常必要的。因为如果在扩展的 category 或者其他 category 里面已经使用了同样的方法名,会导致不可预计的后果。(会调用最后一个加载的方法)

      // 推荐
      @interface NSDate (ZOCTimeExtensions)
      - (NSString *)zoc_timeAgoShort;
      @end
      
      // 不推荐
      @interface NSDate (ZOCTimeExtensions)
      - (NSString *)timeAgoShort;
      @end
      
    2. 推荐使用Category来根据不同功能对方法进行分组。

      @interface NSDate : NSObject <NSCopying, NSSecureCoding>
      
      @property (readonly) NSTimeInterval timeIntervalSinceReferenceDate;
      
      @end
      
      @interface NSDate (NSDateCreation)
      
      + (instancetype)date;
      + (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
      + (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;
      + (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
      + (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;
      // ...
      @end
      

    NSNotification

    当你定义你自己的 NSNotification 的时候你应该把你的通知的名字定义为一个字符串常量,就像你暴露给其他类的其他字符串常量一样。你应该在公开的接口文件中将其声明为 extern 的, 并且在对应的实现文件里面定义。

    因为你在头文件中暴露了符号,所以你应该按照统一的命名空间前缀法则,用类名前缀作为这个通知名字的前缀。(通常在头文件中对外提供的常量都需要加上前缀,声明extern + const,并且并不是在头文件中定义,而是在实现文件中定义。如果不是对外公开的常量,那么通常直接在实现文件里声明为static + const,并且也要加上前缀,直接在后面进行定义。)

    同时,用一个 Did/Will 这样的动词以及用 "Notifications" 后缀来命名这个通知也是一个好的实践。

    // Foo.h
    extern NSString * const ZOCFooDidBecomeBarNotification
    
    // Foo.m
    NSString * const ZOCFooDidBecomeBarNotification = @"ZOCFooDidBecomeBarNotification";
    

    所有文章
    【objc-zen-book】1.条件语句&Case语句的注意
    【objc-zen-book】2.命名
    【objc-zen-book】3.类
    【objc-zen-book】4.Category & NSNotification
    【objc-zen-book】5.美化代码 & 代码组织
    【objc-zen-book】6.Block & self的循环引用

    相关文章

      网友评论

        本文标题:【objc-zen-book】4.Category &

        本文链接:https://www.haomeiwen.com/subject/ruwbcttx.html