【发布时间】:2015-05-27 13:41:37
【问题描述】:
是否有任何可以与 Swift 一起使用的编译器宏?通常情况下,我经常使用模板,这些模板经常需要修改很多部分,自从转向 swift 之后,我已经失去了对 #warning 的喜爱
【问题讨论】:
-
你是指宏还是指令?
标签: swift
是否有任何可以与 Swift 一起使用的编译器宏?通常情况下,我经常使用模板,这些模板经常需要修改很多部分,自从转向 swift 之后,我已经失去了对 #warning 的喜爱
【问题讨论】:
标签: swift
你可以使用// MARK:
// MARK: - UIImagePickerControllerDelegate Methods
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
if let backgroundImageChangedBlock = self.backgroundImageChangedBlock {
backgroundImageChangedBlock(backgroundImage: image)
}
self.dismissViewControllerAnimated(true, completion: nil)
}
// MARK: - UINavigationControllerDelegate Methods
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .None)
}
Xcode 不支持#warning,但可以使用脚本短语:https://stackoverflow.com/a/26869489/907422:
将新的运行脚本添加到目标的构建阶段选项卡(项目设置 > 构建阶段 > '+' > 新的运行脚本阶段),并将以下代码粘贴到空框中:
TAGS="WARNING"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" \( -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"
【讨论】:
Swift 中没有编译器宏或其他 preprocessor directives。您可以设置构建配置,但我怀疑这不是您想要的。
您可以做的是使用documentation 将代码部分标记为需要更改。你也可以编写单元测试,除非你的模板被正确实现,否则它会失败。
Assertions 也可能是让模板化代码失败的好方法,除非它被正确实现。
【讨论】: