Xcode 卡住在 ‘Verifying Xcode…’界面
更新完 Xcode 或安装多个 Xcode后,第一次打开有时会卡住在 “Verifying Xcode…”界面
解决办法是:
|
|
打印调试Log
iOS 中有 Debug 和 Release 两种版本。
- Debug:平时调试代码时使用的版本,体积大,支持设置断点调试,一般我们会在终端中打印一些调试信息等。
- Release:正式发布的版本,不包含任何调试信息,体积小,运行速度快。
为了方便调试,一般情况下我们都会打印一些调试信息的 Log ,但是打印 Log 会影响执行速度,所以一般只在 Debug 版本打印 Log,而 Release 版本则不输出Log。
代码这么多,难道每次发布前,都要一行一行的注释掉所有的调试信息吗?当然不是,这样太傻逼了。
iOS 中有一个宏定义 DEBUG
标志是否是 Debug 模式,因此我们可以控制只在 Debug 模式下才打印 Log
|
|
我封装了一个方法打印更多详细的信息。
|
|
然而,Swift 项目中默认是不支持的,解决方法如下:
- 在【Build Settings】中搜索 “Other Swift Flags”
- 在 Debug 分组添加
"-D" DEBUG
- 在 Release 分组添加
"-D" RELEASE
Swift桥接文件 import \ file not found的问题
Objective-C 和 Swift 混编时需要在桥接文件xxx-Bridging-Header.h
中引入相关的头文件,但头文件的命名只能是字母,不能出现其他字符。
比如想引入:UITableView+FDTemplateLayoutCell
不能直接这样写:
|
|
会提示错误 file not found
解决方法:
点击 【pods】–>【targets】–>【build settings】,搜索 “Packaging”,找到 “Product Name”,发现是 UITableView_FDTemplateLayoutCell
在桥接文件中改为
|
|
即可。
如果你用的是 cocopods 1.1.1或以上 和 Xcode 8,不用在桥接文件中引入,直接在需要用到的地方
|
|
即可。
Swift中的编译器警告
在 Objective-C 中使用 #warning
就可以让编译器显示警告信息,提示我们一些糟糕的代码有待修改,方便定位代码位置。
但 Swift 中并没有实现该编译器特性,虽然有 TODO:
FIXME:
等关键字,但仅仅是在 jumping bar 上有高亮提示,并没有警告信息。
解决方法如下:
- 【项目设置】–>【targets】–>【Build Phases】–> ‘+’ –> 【New Run Script Phase】
- 把下面的代码粘贴到 【shell】中
|
|
你也可以使用 “Release” 替换 “Debug” 只在正式的编译版本中显示警告信息
重新编译就能在 Xcode 的侧边栏看到警告信息了。
消除弃用API的编译器警告
在 Objective-C 中,有些警告不可避免,比如为了兼容旧版本,使用了弃用的API,但看着一大堆的警告又特别烦人,可以使用 #pragma clang diagnostic
消除编译器警告。
|
|
Swift3.0 中则可以使用 #available
来检测API是否可用。参考 The Swift Programming Language
|
|
标记一个function/method为弃用
随着版本迭代,某些方法会被弃用。
直接删掉?万一下次用到怎么办?
注释掉?强迫症不喜欢看到大段的注释代码。
Swift 和 Objective-C 提供了一种弃用 function/method 的方法。
Swift版本
Swift 中弃用某个方法使用的是 @available
attribute
|
|
效果如下:
Objective-C/GCC版本
__attribute__((deprecated))
是 gcc 用来标记 function/method 弃用的方式(同样适用于 clang)
普通函数的语法
|
|
Objective-C的语法
|
|
当然你也可以使用更具有可读性的 DEPRECATED_ATTRIBUTE
在usr/include/AvailabilityMacros.h
,苹果定义了两个宏
|
|
示例:
|
|
参考链接: