美文网首页
开发小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