iOS10、Xcode8适配总结

1.代码注释不能用

原因:

苹果解决xcode ghost,把插件屏蔽了。

解决方法:

终端执行 sudo /usr/libexec/xpccachectl 重启电脑后生效。

注释少了VVDocumenter的解决方法(默认快捷键:option+command+/)
iOS10、Xcode8适配总结_第1张图片
Xcode8注释方法

自定义注释快捷键


iOS10、Xcode8适配总结_第2张图片
注释快捷键

2.版本判断问题

不可使用
#define IsIOS10 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=10)

原因:

版本10位数为2位(超过了1位)

解决方法
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

3.隐私数据问题

项目中访问了隐私数据如:相机,相册,联系人等,在Xcode8中打开编译会crash。

原因

iOS对用户的安全和隐私的增强,在申请私有权限的时候需要添加描述(Xcode 8之前使用的是系统的权限通知框)。

解决办法

在info.plist添加对应的key, value可随意填写。

 
NSPhotoLibraryUsageDescription 
您同意了,我才能访问相册 
 
NSCameraUsageDescription 
您同意了,我才能访问相机 

4.获取UIView的frame不正确问题(返回的width & height 都是 1000)

在viewDidLoad或者awakeFromNib的时候获取View的frame不正确,常见的问题是设置圆角出错。

原因

Xcode8方式编译后,在UIView还没有“布局完毕”的时候默认返回的frame的size大小为1000x1000,等到“布局完毕”后才能获取到正确的大小。

解决办法

在viewDidLoad或者awakeFromNib调用完super方法后再调用View的layoutIfNeeded即可获取到正确的frame值。

-(void)awakeFromNib{
    [super awakeFromNib];    
    //调用此方法后,才可以获取到正确的frame
    [self layoutIfNeeded];
}

- (void)viewDidLoad {
    [super viewDidLoad];
     //调用此方法后,才可以获取到正确的frame
    [self.view layoutIfNeeded];
}

本文将持续更新遇到的问题...

你可能感兴趣的:(iOS10、Xcode8适配总结)