iOS Bug收录(小编亲测好使)
2021-06-16 本文已影响0人
最强的小强
目录:
-
PodFile
文件问题? -
Xcode
运行出现Permission denied
的解决方案? -
for in
循环边遍历边修改报错? -
TZImagePickerController
卡顿问题? - 在绘制某些
UI
时,标签的上方有一条灰线,精度问题? - 使用
UIAlertViewController
时弹窗延迟,点两次才好使? - 报错
property follows cocoa naming convention for returning 'owned' objects
属性不能以关键字符开头? - iOS使用
CornerStone
时程序被锁?
一、问题:warning: The iOS deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 9.0 to 12.0. (in target 'Bugly')
解决方案:将下述内容添加在PodFile
的最下方,重新执行pod install
,下次就不会报⚠️了
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
NOTE:注意修改版本号与你的 platform :ios, '9.0'
一致
二、 Xcode运行出现Permission denied
的解决方案
原因:小编是在XCode版本进行升级的时候,出现的这个权限问题Permission denied
遇到错误的截图:
解决方案:打开终端,输入命令:
chmod -R 777 /Users/pcname/XXX(Xcode工程所在空间)
三、 解决bug Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.
意思是当你使用for in
一边遍历数组,又同时修改这个数组里面的内容,导致崩溃,在iOS中是不允许这么做的
解决方案:
// 方案1: 新创建一个可变数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"123",@"456", nil];
NSMutableArray *temp = [NSMutableArray arrayWithCapacity:16];
for (NSString *str in array) {
if ([str isEqualToString:@"123"]){
[temp addObject:str];
}
}
NSLog(@"temp-%@",temp);
// 方案2:使用 for 循环
for (int i = 0;i < array.count; i++) {
if (i == 1) {
array[i] = @"444";
}
}
NSLog(@"array-%@",array);
四、 使用 TZImagePickerController
调用相机拍照时,点击使用图片,会有2-3秒的卡顿
解决方案:控制台显示UI未在主线程进行渲染,所以造成了卡顿,原因是TZImagePickerController
在方法configTableView
中使用dispatch_async(dispatch_get_global_queue(0, 0), ^{});
导致的,改为主线程dispatch_async(dispatch_get_main_queue)
刷新UI就可以了
五、在绘制某些UI
时,标签的上方有一条灰线
解决方案:原因是某些标签的高度通过计算获取的,如果是小数的话,就可能出现上述问题,使用ceil
函数进行向上取整就可以了
// 知识回顾:
round 如果参数是小数 则求本身的四舍五入.
ceil 如果参数是小数 则求最小的整数但不小于本身.
floor 如果参数是小数 则求最大的整数但不大于本身.
Example:
round(3.4) --- 3 ceil(3.4) --- 4 floor(3.4) --- 3
round(3.5) --- 4 ceil(3.5) --- 4 floor(3.5) --- 3
CGFloat tempNum = 5.234;
tempNum *= 100;
NSLog(@"%.2f", ceil(tempNum)/100); //打印的为5.24
六、使用UIAlertViewController
时弹窗延迟,点两次才好使?
解决方案: 把present
放入主线程
七、报错 property follows cocoa naming convention for returning 'owned' objects
通过查看后得知,属性不能以关键字符开头。不能以alloc
,new
,copy
,mutableCopy
等等关键字作为开头命名,小细节没注意就会犯错⚠️⚠️⚠️
// 错误举例
@property (nonatomic, copy) NSString *newMediaType;
解决方案: 属性不能以关键字符开头命名
// 正确举例
@property (nonatomic, copy) NSString *mediaType;
八、 其他问题:使用CornerStone
时程序被锁?
其实这只是SVN
的一个保护机制,在意外中断以后,会将其锁住。
解决方案:
- 打开显示隐藏文件,进入对应svn目录下的
.svn
文件夹,并找到wc.db
文件( 快捷键 Cmd+Shift+. ); - 用
Navicat Premium
或相关的可以数据库工具打开这个wc.db
文件; - 找到
WC_LOCK
表,并将里面的数据删除。