iOS 开发中的 Tips(一)

背景

这几天被和的话题讨论着。

第45任美国总统大选,我感觉他们两谁当选美国总统都挺没意思的,他们把太多时间和精力放在了人身攻击上,而没有怎么为国家发展、人民的生活考虑太多。只能说(我说出来会不会坐牢啊?你们不认同可以骂我啊,you happy jiu ok):

特朗普不够靠谱、希拉里不够诚实

Lesser of two evils 两害相权取其轻

任职在电商公司的我,对于双十一只想说剁手就行了^_^(没毛病)

11970779-0544a88087fb73c9

Lesser of two evils.png

前言

在简书上写了几篇博客,之前在别的平台或自己搭建的博客都写过。怎么说呢,其实写博客就是一个学习的过程,你会收集资料,看别人博客,看官方文档,但是有一点不会变,你看别人的博客时本身就是一个学习的过程,关键博客或者官方文档里面的知识,我学会了,我理解了,这就变成我自己的知识了,这就是我最大的收获!**

我博客里面的知识都是经过我实践验证而来的(当然也有很多理解不透彻的地方),我写博客的目的不外乎两个^_^:

1.督促自己学习,方便查找知识点
2.交朋友,交流技术和看法

我在发开过程中有可能遇到一个个小知识点,有时候不用就会忘记,所以我想记录一下方便以后忘记查找,时间长了用的多了就记住了!每篇博客会更新 6 个Tips,为什么是6个,因为6对于我有很多不解之情。我会持续更新这个Tips哦

学习6个小Tips

那就跟我一起学习小知识点吧.目录如下:

  1. 修改Mac终端(Terminal)里不同类型文件的显示颜色
  2. 修改Mac终端(Terminal)的提示文字
  3. Mac终端显示/隐藏文件命令
  4. 被忽略的dispatch_block_t
  5. NSAssert()和NSParameterAssert()的使用
  6. FOUNDATION_EXPORT的使用

1. 修改Mac终端(Terminal)里不同类型文件的显示颜色

我们开发经常会使用Terminal,可以说频繁使用(推荐终端工具iTem 2,也是我前leader推荐给我的)。很多人认为使用Terminal逼格很高,其实呢就是逼格很高^_^。Mac OS下ls命令默认是单色输出,如下:

12970779-4126389790f89646

ls单色输出界面.png

我们打开文件~/.bash_profile,添加下面内容,保存文件,重新打开终端运行即可:

解释:

  • SCLICOLOR是用来设置是否进行颜色的显示。CLI是Command Line Interface的缩写。
  • LSCOLORS是用来设置当CLICOLOR被启用后,各种文件类型的颜色。LSCOLORS的值中每两个字母为一组,分别设置某个文件类型的文字颜色和背景颜色。LSCOLORS中一共11组颜色设置,按照先后顺序,分别对以下的文件类型进行设置(经过我测试有好几个不生效,基本够用):
13970779-775c1adfd1fad2f9

ls 多色输出界面.png

2. 修改Mac终端(Terminal)的提示文字

环境变量PS1就是终端的提示文字格式,默认为“\h:\W \u\$”,可以用echo来查看:
echo $PS1
PS2则是换行后的提示符,默认为“>”。
部分可使用的格式有:

如只想显示命令号,可以输入如下命令:
PS1=”\#: “
改成Linux风格可运行:
PS1=”[\u@\h \W]\$ “

但是退出后这些环境变量就丢失了,要永久生效的话,可以在~/.bash_profile~/.profile/etc/profile(需要管理员权限)里进行设置,保存文件,重新打开终端: 你们可以自定义自己想显示的

14970779-9c67ff296757a74f

终端提示文字修改.png

3. Mac终端显示/隐藏文件命令

在开发过程中经常会修改隐藏文件,比如上面的.bash_profile.gitignore等等,我们可以

当然我们可以再mac下显示和隐藏所有隐藏文件:

4. 被忽略的dispatch_block_t

我们经常在开发中定义一个回调block,既没有参数也没有返回值。我们会在项目里这样定义 :

但是系统已经有一个帮我们定义了一个这样的block,只是我们忽略了,那就是

我建议如果遇到需要这样的block,那就直接使用这个block,简单方便。反正我不会再自己定义了!

5. NSAssert()和NSParameterAssert()的使用

我们在开发中对于对象经常为nil或者条件不满足,而导致程序出现bug或者崩溃,我们还不好定位那里出现了问题,现在我就简单介绍NSAssert()NSParameterAssert()抛出异常来定位这种问题的出现。

  • NSAssert()

NSAssert()是个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并且可以自定义异常描述,NSAssert()可以出现在程序的任何一个位置。

异常信息:定位到问题类的某一行

NSAssertassert都是断言,主要的差别是assert在断言失败的时候只是简单的终止程序,而NSAssert会报告出错误信息并且打印出来.所以只使用NSAssert就好,可以不去使用assert。

NSAssertNSCAssert区别不大,作用都是一样。一个定义oc的,一个定义c的。都可以使用!具体宏定义大家可以点击进去看。

  • NSParameterAssert()

NSParameterAssert()也是一个宏定义,它只是针对参数是否存在的断言。

异常信息:定位到问题类的某一行

NSParameterAssertNSCparameterAssert 两者的区别也是前者适用于Objective-C的方法,后者适用于C的函数。

Xcode 已经默认将release环境下的断言取消了, 免除了忘记关闭断言造成的程序不稳定. 所以不用担心 在开发时候大胆使用。

15970779-9d3412ae3afa2519

断言开启.png

总结:NSAssert/NSCAssertNSParameterAssert/NSCparameterAssert 的区别是前者是针对条件断言, 后者只是针对参数是否存在的断言。

6. FOUNDATION_EXPORT的使用

我们经常开发的时候会定义一些常量之类的,我们会用到 #define比如:

而是用 FOUNDATION_EXPORT 如下:

使用FOUNDATION_EXPORT方法在检测字符串的值是否相等的时候效率更快.
可以直接使用(string == AFURLSessionDidInvalidateNotification)来比较, 而#define则使用的是([string isEqualToString: AFURLSessionDidInvalidateNotification])哪个效率更高,显而易见了

FOUNDATION_EXPORT是直接比较指针地址
#define是一一比较字符串的每一个字符是否相等.

我们要多使用 FOUNDATION_EXPORT

结尾:

今天讲解的都是很简单的Tips,希望在开发中多多使用,提升开发效率哦。

我会持续更新Tips的(除非我转职业了),如果对你有帮助。希望点个喜欢加个关注哦^_^

1 2 收藏 1 评论

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部