1.ld: warning: Could not find or use auto-linked framework ‘xxxFramework‘ Undefined symbols【别人】
原因:使用的SDK framework引用了另一个A framework,虽然都是静态库,但是引入SDK的同时,也得引入A framework。否则会有这个警告,并且报符号不存在。
2.C++ + #include<memory> 智能指针提示.....usr/include/c++/v1/__threading_support:457:11: error build: Use of undeclared identifier 'nanosleep'。【别人】
原因:header search paths引入了FFmpeg的头文件,其中有一个头文件名叫time.h,而nanosleep来源于头文件/usr/include/time.h,造成了冲突,导致编译查找头文件时候,系统头文件被覆盖。
3.动静态库嵌套问题:https://www.jianshu.com/p/b03d617917d6 【别人】
4.xcode14 ios 15.7设备连接xcode提示“Failed to prepare device for development”。原因:xcode 14虽然包括iOS16的device support,但是不包括15.7的device support。【自己】
5.LEEAlert非链式写法无法弹出。【自己】
写了一个类方法,方法里的代码如下。
// 这里获取了一下config的对象
LEEBaseConfigModel *config = [LEEAlert alert].config;
config.LeeAddTitle(^(UILabel * _Nonnull label) {
label.text = @"123123";
label.textColor = UIColor.titleDarkColor;
label.font = [UIFont systemFontOfSize:15];
}).LeeAddContent(^(UILabel * _Nonnull label) {
label.text = @"123123";
label.font = [UIFont systemFontOfSize:15];
label.textColor = UIColor.titleColor;
}).LeeAddAction(^(LEEAction * _Nonnull action) {
action.title = @"123123";
}).LeeAddAction(^(LEEAction * _Nonnull action) {
action.title = @"123123";
}).LeeShow();
原因product编译时,本地变量持有临时对象的属性,会因为临时对象立即被释放而释放,导致弹窗无效。奇怪的是develop编译时,释放不会立即发生,导致能弹窗成功。解决办法,本地变量持有[LEEAlert alert]。
6.SSL pinning需要获取cer证书的有效期,因此使用OpenSSL解析证书。刚好项目里有OpenSSL的静态库,但是不知道版本号,于是下了个1.1.1的头文件。发现可以获取序列号,但是获取版本号为-1,X509_get_notAfter返回的时间为null。下载一个编译好的库和头文件,做成一个demo工程发现能获取到时间,于是判断是头文件版本不一致导致的问题。使用IDA获取静态库版本号为1.0.2h,将该版本的头文件引入工程,因为版本较老,提示一些函数不存在,进行更换后,成功获取有效时间。【自己】
7.NSDictionary无法读取NSUserDefaults对应的plist文件,结果为空。原因:NSUserDefaults是以bplist形式存储的,不是xml形式存储,可以获得更小的文件,但是NSDictionary的API无法读取。【自己】
8.文本朗读AVSpeechSynthesizer提示Query for com.apple.MobileAsset.VoiceServices.VoiceResources failed: 2,原因:系统静音。解决办法:激活音频会话并设置分类为AVAudioSessionCategoryPlayback。
9.在keychain中保存公钥和私钥,读取出来后发现公私钥变了,导致解密失败。代码使用了iOS RSA公钥加密、私钥解密_ios rsa私钥解密-CSDN博客的方案。使用nm和grep命令查找“addPrivateKey”方法,发现多处使用了该符号,其中有两处来自使用的音视频会议库,初步怀疑其使用了同名的key,导致偶发的keychain覆盖问题。