美文网首页
开发小Tip总结(持续更新)

开发小Tip总结(持续更新)

作者: Simple_Dev | 来源:发表于2017-03-30 15:06 被阅读26次

    一个追求极致的人,一定要写出优美的代码.每次回头看自己写代码都觉得看不下去,无法想象那是自己写的代码.不断反思,觉得写代码一直太随意,不应该只一味的追求功能的实现,而忽略了代码的整洁,代码的结构.一个好的结构能够更快的进行版本迭代.严格的要求自己,注重代码质量,不断的修炼自己是当下对我自己的要求,增加自己的代码量,改变自己的思维.

    开发Tips

    Tips1:我的controller代码结构

       #pragma mark - life cycle
       
       #pragma mark - UITableViewDelegate
       
       #pragma mark - CustomDelegate
       
       #pragma mark - event response
       
       #pragma mark - private methods
       
       #pragma mark - getters and setters
    

    Tips2:

      更新UI可以放在viewWilllayoutSubview或者didLayoutSubview里.
    

    Tips3:

     巧用属性的get方法来进行初始化.
    

    Tips4:单例正确姿势

       + (instancetype)sharedInstance { 
               static id sharedInstance = nil; 
               static dispatch_once_t onceToken;
               dispatch_once(&onceToken, ^{ 
               sharedInstance = [[self alloc] init]; 
            }); 
               return sharedInstance;
        }
    

    Tips5:忽略不必要的警告⚠️

    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
            return [target performSelector:action withObject:params];
    #pragma clang diagnostic pop
    

    Tips6:CGRect函数

    CGFloat x = CGRectGetMinX(frame); 
    CGFloat y = CGRectGetMinY(frame);
    CGFloat width = CGRectGetWidth(frame);
    CGFloat height = CGRectGetHeight(frame);
    

    Tips7:避免循环引用

    如果【block内部】使用【外部声明的强引用】访问【对象A】, 那么【block内部】会自动产生一个【强引用】指向【对象A】
    如果【block内部】使用【外部声明的弱引用】访问【对象A】, 那么【block内部】会自动产生一个【弱引用】指向【对象A】
    
         __weak typeof(self) weakSelf = self;
         myObj.myBlock = ^{
        __strong typeof(self) strongSelf = weakSelf;
        if (strongSelf) {
              [strongSelf doSomething]; // strongSelf != nil
              // preemption, strongSelf still not nil(抢占的时候,strongSelf 还是非 nil 的)
             [strongSelf doSomethingElse]; // strongSelf != nil }
             else { // Probably nothing... return;
              }
       };
    

    Tips8:SD,XIB的加载

    加载xib,xib名称用NSStringFromClass(),避免书写错误
    

    Tips9:监听键盘的通知建议:

    使用:UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification
    而不是,下面代码;因为键盘可能因为改变输入法,切换成表情输入,切换成英文,那么frame可能会变高,变矮,
    不一定会发出下面这些通知,但 是肯定会发上面的通知
    UIKIT_EXTERN?NSString *const UIKeyboardWillShowNotification;
    UIKIT_EXTERN?NSString *const UIKeyboardDidShowNotification;
    UIKIT_EXTERN?NSString *const UIKeyboardWillHideNotification;
    UIKIT_EXTERN?NSString *const UIKeyboardDidHideNotification;
    

    Tip10: MVC

    M应该做的事:
    1. 给ViewController提供数据
    2. 给ViewController存储数据提供接口
    3. 提供经过抽象的业务基本组件,供Controller调度
    
    C应该做的事:
    1. 管理View Container的生命周期
    2. 负责生成所有的View实例,并放入View Container
    3. 监听来自View与业务有关的事件,通过与Model的合作,来完成对应事件的业务。
    V应该做的事:
    1. 响应与业务无关的事件,并因此引发动画效果,点击反馈(如果合适的话,尽量还是放在View去做)等。
    2. 界面元素表达

    相关文章

      网友评论

          本文标题:开发小Tip总结(持续更新)

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