iOS 10和Xcode8踩坑记录

权限崩溃问题

控制台日志:This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.

意思是说:你需要在info.plist文件 添加一个“NSContactsUsageDescription ”的Key,Value添加一个描述。

1,在项目中找到info.plist文件,右击有个 Open As,以Source Code 的形式打开

2,分别复制 以下 Value 和Key,Key 一定不能错,Value 可以随便填写

相机权限描述:

<key>NSCameraUsageDescription</key>
<string>cameraDesciption</string>

通信录:

<key>NSContactsUsageDescription</key>
<string>contactsDesciption</string>

麦克风:

<key>NSMicrophoneUsageDescription</key>
<string>microphoneDesciption</string>

相册:

<key>NSPhotoLibraryUsageDescription</key>
<string>photoLibraryDesciption</string>

eg:其他权限描述,debug 控制台都会有输出的,自行添加就OK

xib和storyboard布局显示问题

使用Xcode8偶然打开了项目中的storyboard文件,然后跑起项目,却发现界面全乱了。或者说界面无法显示等问题。
经过一番探究后,发现Xcode8对xib和storyboard做出了一些修改,在awakeFromNib和viewDidLoad方法中拿自己拖上去的控件的frame均变成了(0, 0, 1000, 1000),若直接在此使用控件frame进行二次修改,如:修改A控件的宽为B控件的一半,则B控件实际当前的宽是1000,就会造成混乱,或者界面无法显示等。解决办法是在使用原控件frame之前调一次layoutIfNeeded方法。

最简单的方法就是在viewDidLoad方法中加入[self.view layoutIfNeeded]。

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view layoutIfNeeded];    // 调用此方法
    
}

控制台输出不相关信息

解决方法:EditScheme -> 左侧Run -> 右侧Arguments -> 下方Environment Variables -> 添加 OS_ACTIVITY_MODE = disable

http://devhy.com/2016/09/13/13-ios10-and-xcode8-adapt/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 手机升级了 iOS10 Beta,然后用正在开发的项目 装了个ipa包,发现点击有关 权限访问 直接Crash了,...
    John_LS阅读 24,075评论 13 43
  • 今天 手机升级了 iOS10 Beta,然后用正在开发的项目 装了个ipa包,发现点击有关 权限访问 直接Cras...
    TomatosX阅读 314评论 0 1
  • iOS10上,若你的项目访问了隐私数据,比如:相机,相册,通讯录等,app会直接Crash了,这是因为iOS10对...
    AyinLee阅读 798评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,957评论 19 139
  • 一直很喜欢汪老,读他文字总是轻松的、惬意的。正如文如其人,汪老在生活中肯定也是个温暖、开朗、豁达,甚至有点闲适无为...
    山竹怪兽阅读 2,283评论 4 5