今天在看WebViewJavascriptBridge
源码的时候发现一个神奇的宏,在定义较长字符串时很实用。
举个例子,将一段js代码存到一个变量,为了便于阅读需要加入换行,需要在每行结束加上\
。
NSString *str = @"function() { \
if (window.WebViewJavascriptBridge) { \
return; \
} \
})(); \
";
这时,可以用宏来优化。
#define LONG_STRING_DEFINE(x) #x
NSString *str = @LONG_STRING_DEFINE(function() {
if (window.WebViewJavascriptBridge) {
return;
}
})();
);
宏展开后代码如下
NSString *str = @";(function() { if (window.WebViewJavascriptBridge) { return; })();";
用Xcode看宏展开
打开Assistant Editor
,选择Preproces
,就可以看到展开的宏。
![img_389a36efdb8b7ce2e02e1e2d5d77f165.jpe](https://yqfile.alicdn.com/img_389a36efdb8b7ce2e02e1e2d5d77f165.jpeg?x-oss-process=image/resize,w_1400/format,webp)
15396963641371.jpg