美文网首页
Workflow Tips

Workflow Tips

作者: 一吻江山 | 来源:发表于2017-07-08 08:20 被阅读16次

    这篇文章主要是分享Mac上Xcode开发中的工作流程的小技巧

    Markdown

    Markdown是纯文本文档,却能图文并茂地显示文章;
    不用过多地考虑排版问题,只要用对元素就行,专注在内容表达上,就能呈现美观易读的文章;
    适合引用代码块,比如高亮与缩进

    以下软件或网站都可以使用Markdown:

    元素:标题,链接,图片,代码块,列表,表格......


    Markdown元素

    快捷键

    操作中使用快捷键可以提升工作效率,但记忆和发现快捷键是痛苦的,以下软件可以方便我们记忆:

    比如下图,KeyCue显示的Finder的快捷键


    KeyCue制作的快捷键表

    Xcode

    • User Breakpoints
    • Open Quickly
    • 文件内大纲
    • 文件过滤
    • 代码折叠
    • 留白与区块
    • 导航
    • 数据库可视化

    User Breakpoints

    1. 在UIApplicationMain上新建符号断点
    2. 在断点上增加Action:Debugger Command 内容为expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework/RevealServer", 0x2) : ((void*)0)
    3. 在普通断点上右击,选择Move Breakpoints To,选择User

    Open Quickly

    shift + command + o
    模糊搜索,打开文件,打开函数,打开类,

    打开函数 setupif

    打开文件 cmplayer

    模糊搜索 cmbpvc

    文件内大纲

    control + 6

    文件过滤

    最近查看/编辑过的文件
    command + 1 --> option + command +j --> tab --> space

    代码折叠

    shift + option + command + <-
    shift + option + command + ->

    代码风格

        id b = ^(){};
        [self willTurnPageForward:b];
    

    折叠代码后好复制移动代码,利于分区

    留白与区块

    区块
    iOS应用架构谈 view层的组织和调用方案

    关于VC中的Public方法,这里不讨论

    关于private methods,正常情况下ViewController里面不应该写

    不是delegate方法的,不是event response方法的,不是life cycle方法的,就是private method了。对的,正常情况下ViewController里面一般是不会存在private methods的,这个private methods一般是用于日期换算、图片裁剪啥的这种小功能。这种小功能要么把它写成一个category,要么把他做成一个模块,哪怕这个模块只有一个函数也行

    ViewController基本上是大部分业务的载体,本身代码已经相当复杂,所以跟业务关联不大的东西能不放在ViewController里面就不要放。另外一点,这个private method的功能这时候只是你用得到,但是将来说不定别的地方也会用到,一开始就独立出来,有利于将来的代码复用

    留白

    #import <Foundation/Foundation.h>
    
    @interface CMBatchDownloadManager : NSObject
    
    @end
    
    
    //留白:类与类之间有留白:2行或更多
    @interface CMBatchTask : NSObject<NSURLSessionDelegate>
    
    @property (nonatomic, copy, readonly)NSString* bookID;
    
    @property (nonatomic, readonly)NSError* error;//下载任务下载错误原因
    
    - (instancetype)initWithBookID:(NSString*)bookID
                       chapterList:(NSArray<NSString*>*)chapterList
                        formatType:(NSString*)formatType
                      isSupportRTF:(NSString*)isSupportRTF
                       clientAgent:(NSString*)clientAgent
                            userId:(NSString*)userId
                               url:(NSString*)url;
    
    - (void)pause;//留白:- 与 返回类型之间有留白
    
    - (void)resume;//留白:方法与方法之间有留白:1行
    
    - (void)cancel;
    
    @end
    

    不留"白": 变量定义与第1次使用

         //坏的示例
        BOOL change = YES;
        /*
        .......其它代码  
        */
        if (![self hasPrevLeaf]) {
            change = NO;
            block();
            return;
        }
    
         /*
        .......其它代码   
        */
        BOOL change = YES;
        if (![self hasPrevLeaf]) {
            change = NO;
            block();
            return;
        }
    

    不留"白"

    - (void)drawRect:(CGRect)rect
    {
    
    }
    

    导航

    数据库可视化

    "journal_mode": 数据不会立即写入sqlite文件

    NSMutableDictionary *sqliteOptions = [NSMutableDictionary dictionary];
    [sqliteOptions setObject:@"WAL" forKey:@"journal_mode"];
    

    cmread.sqlite
    cmread.sqlite-shm
    cmread.sqlite-wal

    "DELETE": 数据立即写入sqlite文件

    NSMutableDictionary *sqliteOptions = [NSMutableDictionary dictionary];
    [sqliteOptions setObject:@"DELETE" forKey:@"journal_mode"];
    

    cmread.sqlite

    Git

    git config

    ➜  ~ git config --system --help
    usage: git config [<options>]
    
    Config file location
        --global              use global config file
        --system              use system config file
        --local               use repository config file
        -f, --file <file>     use given config file
    
    范围 文件
    --system /etc/gitconfig
    --global ~/.gitconfig
    --local .git/config

    ~/.gitconfig文件部分内容:

    [core]
        excludesfile = /Users/zhoujie/.gitignore_global
        editor = /Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w
    [difftool "sourcetree"]
        cmd = /usr/local/bin/bcomp \"$LOCAL\" \"$REMOTE\"
        path = -ro
    [mergetool "sourcetree"]
        cmd = /usr/local/bin/bcomp \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
        trustExitCode = true
    [commit]
        template = ~/.gitmessage
    

    .git/config文件部分内容:

    [difftool "tower"]
        cmd = \"/Applications/Tower.app/Contents/Resources/beyondcompare.sh\" \"$LOCAL\" \"$REMOTE\"
    

    ~/.arcrc文件部分内容:

    {
      "config": {
        "default": "http://211.140.17.116:8089/",
        "editor": "/Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w"
      }
    }
    

    git rebase

    git reset

    git cherry-pick

    git-cherry-pick - Apply the changes introduced by some existing commits

    Alfred

    阿尔弗雷德,电影《蝙蝠侠》里的管家

    功能:

    • 打开应用程序
    • 打开文件
    • 搜索 Web Search, File Search
    • 剪切板
    • 计算器

    编辑器

    • Atom
    • Sublime Text
    • Visual Studio Code

    Visual Studio Code的插件Code Runner可以运行语言代码:

    1. 选择文件语言类型
    2. 写代码
    3. 运行


    iTerm, FinderGo, OpenSim, Patterns

    FinderGo: Open terminal quickly from Finder

    OpenSim: OpenSim is an open source alternative to SimPholders, written in Swift.

    Patterns: Patterns is a simple yet powerful tool for working with regular expressions. Build great patterns quickly and effortlessly with syntax coloring, and with matching and replacing occurring in real time

    可以点击链接打开浏览器

    • Regular Expression: \[\d+:\d\d.\d+\]
    • Search Text: [00:00.10]
    • 选择Objective-C复制代码后:
    @"\\[\\d+?:\\d\\d.\\d+?\\]"//转意后的正则表达式
    
    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\[\\d+?:\\d\\d.\\d+?\\]" options:0 error:&error];
    NSUInteger numberOfMatches = [regex numberOfMatchesInString:searchText options:0 range:NSMakeRange(0, [string length])];
    

    [TOC]

    相关文章

      网友评论

          本文标题:Workflow Tips

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