美文网首页
iOS Tricks

iOS Tricks

作者: cc_Jumper | 来源:发表于2018-07-31 11:49 被阅读18次

标记:
1-E-1 : 对第1的补充1(1-Extend-1)

1.自定义日志打印接口,方便在console filter中过滤输出,只关心自己的打印,在开发新的业务功能的时候很好用

// 自定义日志TAG
// 可以在XCode的Console中Filter里面输入kTagMyLog来过滤只显示 MyLog方法打印的日志
// 可以在XCode的Console中Filter里面输入kTagMyBusiness来过滤这次需求相关的日志,如SYGB(首页改版),tag可以依据需求改动
#define kTagMyLog @"MyLog"
#define kTagMyBusiness @"SYGB"
#define _Log(tag, s) do { \
NSLog([NSString stringWithFormat:@"[%@][%@]%sLine:%d: %@",\
tag,\
[[NSThread currentThread] isMainThread] ? @"Main" : @"NoMain",\
__PRETTY_FUNCTION__,\
__LINE__,\
s]); \
} while (0)
#define MyLog(format, ...) _Log(kTagMyLog, (format, ##__VA_ARGS__))
#define MyBusLog(format, ...) _Log(kTagMyBusiness, (format, ##__VA_ARGS__))

1-E-1 宏定义中的do while防御式编程

注意:使用do while可防御一部分代码书写方式,比如有些同学在使用if else语句的时候,在if分支因为只调用一句宏,故省略掉外括号的情况

// 虽然实际情况下不会这样子输出`及格了`,这里只是举例
#define printGoodGrade1 \
NSLog(@"及"); \
NSLog(@"格"); \
NSLog(@"了"); \

#define printGoodGrade2 \
{ \
NSLog(@"及"); \
NSLog(@"格"); \
NSLog(@"了"); \
}

#define printGoodGrade3 \
do { \
NSLog(@"及"); \
NSLog(@"格"); \
NSLog(@"了"); \
} while(0)

- (void)test {
    int grade1 = 59;
    int grade2 = 61;
    
    // 🌫case1 logic error 也会输出 格,了两个字
    if (grade1 > 60)
        printGoodGrade1;

    // 🌫case2 compile error
    if (grade2 > 60)
        printGoodGrade2;
    /*
     宏展开-->
     {
     NSLog(@"及");
     NSLog(@"格");
     NSLog(@"了");
     };  // 多一个分号,会导致编译报错. Expected expression
     */
    else {
        NSLog(@"not qulified");
    }
    // 🌫case3 run proper, but attention this macro can't end with character ";", so it's not best macro define
    if (grade2 > 60)
        printGoodGrade2
    else {
        NSLog(@"not qulified");
    }
    // 🌈case4 run proper, user use 'if else' case with not bracket wrapper also guard right, so it's best macro define
    if (grade2 > 60)
        printGoodGrade3;
    else {
        NSLog(@"not qulified");
    }
}

🌈结论:在定义宏的时候,如果是有多条语句,请使用do {} while(0)包裹 🌈

2.数据测试网站

3.Instruments使用技巧

如果使用 Instruments 查看调用堆栈时可能看到的都是地址而不是函数名,这样就不太好定位问题了。这时候你可以把相关项目的 Build Settings - Debug Information Format 的 Debug 和 Release 都设置为 DWARF with dSYM File,这样就能将对应的堆栈信息符号化显示了

4.Xcode常用路径

  1. 在Xcode > Preferences > Components下载的模拟器路径如下

/Library/Developer/CoreSimulator/Profiles/Runtimes

可以直接从该目录提取下载好的模拟器传给他人使用(同样放在该目录下),而不用每次下载

  1. Xcode自定义主题路径

~/Library/Developer/Xcode/UserData/FontAndColorThemes/

如果没有该目录,可以在UserData下手动创建FontAndColorThemes文件夹,然后将主题文件(userDefines.xccolortheme)放入其中,完全 退出Xcode后,启动就可以被识别到,然后可以在 Xcode > Preferences > Fonts & Colors里面设置刚才导入的主题

强烈推荐的主题:
https://draculatheme.com/xcode/

  1. Archives路径

/Users/pengchangcheng/Library/Developer/Xcode/Archives

  1. DerivedData路径

/Users/pengchangcheng/Library/Developer/Xcode/DerivedData

相关文章

  • iOS Tricks

    标记:1-E-1 : 对第1的补充1(1-Extend-1) 1.自定义日志打印接口,方便在console fi...

  • Xcode9 关于模拟器的提示和技巧

    本文是一篇译文。原文链接:iOS Simulator on Steroids: Tips & Tricks in ...

  • Useful tricks for Ubuntu / Ubunt

    Useful tricks Useful tricks in Linux using and server man...

  • tensorflow 试gan记录

    参考tricks: keep calm and train GAN gan tricks 外国友人调DCGAN 为...

  • 学习CSS的资源(暂记)

    1.Google: 关键词 MDN 2.CSS Tricks(https://css-tricks.com) 3....

  • Swift tricks-Phantom Types

    Swift tricks系列收集Swift牛逼的patterns和让你代码更加Swifty的tricks,持续更新...

  • Swift tricks-Nonmutating

    Swift tricks系列收集Swift牛逼的patterns和让你代码更加Swifty的tricks,持续更新...

  • Swift tricks-Enum Associated Va

    Swift tricks系列收集Swift牛逼的patterns和让你代码更加Swifty的tricks,持续更新...

  • tricks

    http://blog.csdn.net/u014365862/article/details/77159778h...

  • tricks

    睫毛膏:在不掉毛的纸巾上蘸,去掉多余液体,不会苍蝇腿;每刷一遍都用✨金属梳齿的睫毛刷疏通✨松润代言的那款 眼妆:先...

网友评论

      本文标题:iOS Tricks

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