升级Xcode8后项目问题解决(持续总结)

1.输出log日志关闭

Xcode8运行项目之后,控制台打印了好多log输出,根据如下操作可以关掉这些log日志,点击项目Edit Scheme或者按command + shift + <快捷键。在弹出的窗口中选择Run ->Arguments -> Environment Variables里添加:Name:OS_ACTIVITY_MODE Value:disable

输出log日志关闭

解决了问题之后,是不是赶脚心里舒服多了,乱七八糟的输出不见了,但是在我们用真机调试的时候,NSLog也不工作了。我们在输出窗口看不到我们想要的日志了。

定义一个宏即可

#ifdef DEBUG
#define CLLog(format, ...) printf("[%s] %s [第%d行] %s\n", __TIME__, __FUNCTION__, __LINE__, [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]);
#else
#define NSLog(format, ...)
#endif

2.Command +/ 快捷键注释代码快捷键不能用

在终端输入
sudo /usr/libexec/xpccachectl重启电脑即可

3.LaunchScreen.storyboard: The document “(null)” requires Xcode 8.0 or later

1) 打开storyboard, 右键点击,点击source Control - > commit
2)删除这行代码:
<capalibility name="documents saved in the Xcode 8 format"> minToolsVersion=8.0/>
3)删除所有你要用到的storyboard的里面的整个行代码,提交.
4)重新运行程序,问题解决.
同样, xib文件遇到类似报错,也是这样解决.
或者:
Xcode8 打开StoryBoard,如图所示,Open in 改为7.X即可:

Open in 改为7.X

4.字体变大,原有的fream需要适配,只能逐一排查啦

5.Nib问题:警告

- (void)awakeFromNib {
// Initialization code
}

需要添加:
[super awakeFromNib];

6.系统判断失效

现在改用:

#define IOS10_OR_LATER  ([[[UIDevice currentDevice] systemVersion] compare"10.0" options:NSNumericSearch] != NSOrderedAscending)

7.程序调用相机和相册程序崩溃Crash

在iOS10中,如果你的App想要访问用户的相机、相册、麦克风、通讯录等等权限,都需要进行相关的配置,不然会直接crash.

崩溃日志如下:
This app has crashed because it attempted to access privacy-sensitive data without a usage description.The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

  • 意思试图访问安全隐私数据,但是又没有相应的描述,你必须要包含在info.plist里包含一个键值 NSPhotoLibraryUsageDescription对应的描述。
  • 其实上面是iOS10,苹果加强了对隐私数据的保护,要对隐私数据权限做一个适配iOS10调用相机,访问通讯录,访问相册等都要在info.plist中加入权限访问描述,不然之前你们的项目涉及到这些权限的地方就会直接crash掉。

需要在info.plist中添加App需要的一些设备权限:

访问蓝牙:NSBluetoothPeripheralUsageDescription
访问日历:NSCalendarsUsageDescription
相机:NSCameraUsageDescription
相册:NSPhotoLibraryUsageDescription
通讯录:NSContactsUsageDescription
始终访问位置:NSLocationAlwaysUsageDescription
位置:NSLocationUsageDescription
在使用期间访问位置:NSLocationWhenInUseUsageDescription
麦克风:NSMicrophoneUsageDescription
访问媒体资料库:NSAppleMusicUsageDescription
访问健康分享:NSHealthShareUsageDescription
访问健康更新:NSHealthUpdateUsageDescription
访问运动与健身:NSMotionUsageDescription
访问提醒事项:NSRemindersUsageDescription

8.如果你的项目中使用了MJRefresh,并且不是最新版本的,就会直接崩溃:

只要将MJRefresh更新到最新版本就行了。简单粗暴

9.在用模拟器进行调试的时候,会莫名的输出

这个输出不影响调试,也不影响程序运行。

模拟器调试问题

原因:是在这两个路径下有两个模拟器包文件,并且这两个包文件中都包含了PhotoLibraryServices文件,模拟器不知道使用哪个文件了。在真机上就不会出现这种情况。

解决方法:这两个模拟器包文件谁都不可以删除,删除谁都会报错,确切的说删除iPhoneSimulator10.0.sdk这个包文件会报错,另一个不能在模拟器上运行了。我得到的结果是:这可能是模拟器的bug,也可能是我电脑上安装了两个版本的Xcode.所以可以忽略这个警告.

10.跳转到app内的隐私数据设置页面

我们知道用户没开启权限的话要提醒用户去设置开启,所以要跳转到app的隐私数据界面。如何调用呢,可以定义一个宏方便调用:

UIKIT_EXTERN NSString *const UIApplicationOpenSettingsURLString
NS_AVAILABLE_IOS(8_0);

//-----------------------系统权限设置路径(iOS8以后适用)--------------
// 设置url
#define SettingURL [NSURL URLWithString:UIApplicationOpenSettingsURLString]
// 调到设置
#define GoToSetting if([[UIApplication sharedApplication] canOpenURL:SettingURL]) {   [[UIApplication sharedApplication] openURL:SettingURL];}}
// 去设置
if (IOS8_OR_LATER) {
    GoToSetting; 
}

11.真机调试问题-App installation failed

Xcode 8 无证书真机调试时免费App ID出现的问题:


免费应用程序调试最大限度

原因:苹果免费App ID只能运行2个应用程序,当调试第三个的时候就会报这个错误, 必须把之前的应用程序删除,才能调试新的

解决方法:连接iPhone 打开Xcode--->Window--->Devices删除不是本次运行的应用程序即可.

12.***** Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**

原因:

新的SDK不允许在设置rootViewController之前做过于复杂的操作,导致在didFinishLaunchingWithOptions 结束后还没有设置rootViewController
Xcode7需要所有UIWindow必须立即先设置一个rootViewController

解决办法:
先设置个rootVIewController 之后重新赋值
UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
window.rootViewController = [UIViewController new];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容