iOS开发之Objective-CiOS DeveloperiOS开发进阶

iOS 10和Xcode8踩坑记录

2016-10-13  本文已影响267人  lingxuemy

权限崩溃问题

控制台日志: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/

上一篇 下一篇

猜你喜欢

热点阅读