Tips

作者: _狸约约 | 来源:发表于2018-08-02 18:10 被阅读0次

    不自动锁屏

    [UIApplication sharedApplication].idleTimerDisabled=YES

    自动锁屏

    [UIApplication sharedApplication].idleTimerDisabled=NO

    清除一个项目的编译缓存

    alt+command+shift+K

    Swift运行时根据类名实例化对象

    if let dic = Bundle.main.infoDictionary, let nameSpace = dic["CFBundleExecutable"] as? String {
            let clsName = nameSpace + "." + "ViewController"
             if let cls = NSClassFromString(clsName), let vcCls = cls as? UIViewController.Type {
                  let c = vcCls.init()
                 self.navigationController?.pushViewController(c, animated: true)
            }
     }
    

    lldb(gdb)常用的控制台调试命令?

    1). p 输出基本类型。是打印命令,需要指定类型。是print的简写
        p (int)[[[self view] subviews] count]
    2). po 打印对象,会调用对象description方法。是print-object的简写
        po [self view]
    3). expr 可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。
    4). bt:打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈
    5). br l:是breakpoint list的简写
    

    调用的入口

    Thread.callStackSymbols
    

    统计自己的工程有多少行代码

    打开终端,cd到工程所在文件夹
    1、列出工程共有多少行(grep -v "^$" 是去掉空行,注释也在代码量内)

    find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs grep -v "^$"|wc -l
    

    2、列出每个文件分别有多少行

    find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l
    

    多线程遍历数组(对遍历的顺序没有要求时)

    DispatchQueue.concurrentPerform(iterations: array.count) { (index) in
          print("\(array[index])")
    }
    

    Swift中类似OC在函数体内定义static变量

    因为swift中不支持添加不附加到类/结构的静态变量,可以尝试下面这种投机的方法

    func test() {
        struct User {
           static var count = 0
        }
        User.count = User.count + 1
        print("\(User.count)")
    }
    

    通过runTime获取一个类的全部属性/方法

    var count1: UInt32 = 0
    var count2: UInt32 = 0
    let members = class_copyIvarList(UIView.self, &count1)//获取所有属性
    let methods = class_copyMethodList(UIView.self, &count2)//获取所有方法
    for i in 0 ..< Int(count1) {
        let v = members![i]
        let a = ivar_getName(v)
        let t = ivar_getTypeEncoding(v)
        print("\(String(utf8String: a!)),\(String(utf8String: t!))")
        //object_setIvar()通过这个方放,可以修改属性值
    }
    for i in 0 ..< Int(count2) {
        let m = methods![i]
        let n = method_getName(m)
        print("\(String(utf8String: sel_getName(n)))")
    }
    

    Git创建公钥/私钥

    1.检查本机是否已有公钥
    在终端中输入如下命令:
    $ cd ~/.ssh
    2.如果电脑中有以前遗留的密钥,将其删除掉
    使用如下命令:
    $ mkdir key_backup
    $ cp id_rsa* key_backup
    $ rm id_rsa*
    3.生成新的公钥
    终端中输入如下命令
    $ ssh-keygen -t rsa -C "邮箱地址"
    之后终端会提示几次密码设置,如果设置了密码,在向Git仓库进行代码交互操作时需要键入密码,也可以全部回车带过,表示不需要密码。
    4.向Git仓库中导入公钥
    在.ssh文件夹下使用ls命令查看所有文件,可以看到生成了一个id_rsa.pub的文件,使用vi工具打开它,将其内容复制出来,在Git仓库中新建公钥,复制上去即可。例如github中导入密钥过程

    相关文章

      网友评论

          本文标题:Tips

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