合并unity工程遇到的问题:
1.ios cannot use "@throw" with objective-c exceptions disabled 问题解决方案
解决办法:修改target -> build settings -> All | Combined -> Apple LLVM Compiler 7.0 - Language 中 Enable Objective-C Exceptions 为YES
2.错误为:a parameter list without types is only allowed in a function definition。
解决办法:Apple LLVM 6.1 - Language设置C Language Dialect为Compiler Default或者GNU99[-std=gnu99]
3.使用 LLVM 混淆器添加参数进行编译提示如下错误:
clang (LLVM option parsing): for the -bcf option: may only occur zero or one times!
将编译参数全部复制下来,仔细对比发现,有重复的
-DINIT_SCRIPTING_BACKEND=1
-mllvm
-bcf
-fno-strict-overflow
-DINIT_SCRIPTING_BACKEND=1
-mllvm
-bcf
于是再查看 Xcode 的 CFlag 配置,发现有一个 $(inherited) 参数,删除这个参数就可以了。
ios开发进阶笔记
1.修改block之外的变量
默认下,在block中访问的外部变量是复制过去的,即无法改变原变量的值。需要能改变原变量的值,需要在变量声明时加上__block。示例代码如下:
__block int a = 0;
void (^func)(void) = ^{
a++;
}
func();
//到这里a的值已被修改为1;
如果变量是引用类型的对象,默认情况下虽然是复制,但引用计数也会加1,我是这么理解的。
2.关于UIWindow
- UIWindow 继承自UIView,所以可以通过addSubView方法添加子UIView。
- 通常程序里只有一个UIWindow,当UIAlertView弹出时,系统会临时创建一个UIWindows,并让其UIWindowLevel设置的更高,以保证它出现在所以应用界面之上。
- UIWindow还适用于实现:手势解锁界面,启动介绍页,通知和提示的显示,弹框广告。
笔记
1.判断iphoneX的方法。
if (@available(iOS 11.0, *)) {
//底部安全距离 iphoneX为34
CGFloat fBottom = [[[UIApplication sharedApplication] delegate] window].safeAreaInsets.bottom;
} else {
// Fallback on earlier versions
}
网友评论