iOS 开发中的常见问题记录
Xcode
❌ Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
出现这个问题,说明你访问了已经释放的内存。
报错行如果有使用到参数,可以看看参数是不是已经为 NULL 了。
报错行如果没有参数,那需要看调用这个方法的对象是不是已经被释放了。
❌ No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64)
原因是模拟器缺少 x86_64 指令集,在 VALID_ARCHS 中 Debug 模式下添加如下:
❌ Building for iOS Simulator, but the linked library ‘***’ was built for iOS.
Xcode -> File -> Workspace Settings -> Build System 选择 Legacy Build System,当然这个只能做临时解决方案,因为这套编译系统在新版本 Xcode 中已经废弃了,不同的开发人员应该选择同一套编译系统。
❌ Multiple commands produce *** Info.plist
检查一下 Build Phases -> Copy Bundle resources 中是否把 Info.plist 作为资源文件进行管理了,如果可以搜到,把这一行的引用删除。
❌ Property xxx cannot be found in forward class object xxx
出现这类错误,通常由于头文件引起的:
没有引入相应的头文件;
某头文件出现了循环引用:A引用B,B引用C,C引用A 。
是不是没想到自己居然会犯引用的错误,哈哈哈~
❌ ISO C++17 does not allow ‘register’ storage class specifier
C++ 中的关键字 register
在 2011 年(C++11)被弃用,自那以后 register
已经没有意义,现在已经被删除。如果在使用基于 C++ 的三方库时提示了这个错误,可以尝试修改 Xcode 中的 Build Settings
-> C++ Language Dialect
和 C++ Standard Library
的 Compiler Default
。
我的项目中把 C++ Language Dialect
从 GUN++17
降为 GUN++11
一定程度解决了 C++ 语法上的错误。
❌ -[NSKeyedUnarchiver validateAllowedClass:forKey:]
1 | -[NSKeyedUnarchiver validateAllowedClass:forKey:]: NSSecureCoding allowed classes list contains [NSObject class], which bypasses security by allowing any Objective-C class to be implicitly decoded. Consider reducing the scope of allowed classes during decoding by listing only the classes you expect to decode, or a more specific base class than NSObject. This will become an error in the future. Allowed class list: {( |
Pod
❌ pod install
1 | RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54 |
出现此类问题,大部分都是网络导致的,毕竟我们天朝的网络可是很不一般的……
如果,我是说如果你有科学上网的话,可以尝试下面的配置:
1 | git config --global http.https://github.com.proxy socks5://127.0.0.1:10086 |
取消代理:
1 | git config --global --unset http.https://github.com.proxy |
或者是这种错误:
1 | LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 |
查看一下已有的代理是否配置的有问题,unset 一下。
1 | git config --global --list |