消除无用输出语句问题:Xcode8之后,新创建的项目在手机上运行后,就会在输出窗口,输出一大堆乱七八糟的日志,对我们几乎没有用,如图:

解决办法:

【product】-【scheme】-【Edit Scheme】-【Run】-【Argument】-【Environment Variable】添加key:Value【OS_ACTIVITY_MODE : disable】即可。

但是在我们用真机调试的时候,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

访问权限问题

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

NSBluetoothPeripheralUsageDescription
访问蓝牙

NSCalendarsUsageDescription
访问日历

NSCameraUsageDescription
相机

NSPhotoLibraryUsageDescription
相册

NSContactsUsageDescription
通讯录

NSLocationAlwaysUsageDescription
始终访问位置

NSLocationUsageDescription
位置

NSLocationWhenInUseUsageDescription
在使用期间访问位置

NSMicrophoneUsageDescription
麦克风

NSAppleMusicUsageDescription
访问媒体资料库

NSHealthShareUsageDescription
访问健康分享

NSHealthUpdateUsageDescription
访问健康更新

NSMotionUsageDescription
访问运动与健身

NSRemindersUsageDescription
访问提醒事项

从2017年1月1日起,强制使用https,所有新提交的 app 默认不允许使用NSAllowsArbitraryLoads来绕过ATS的限制 安全传输不再支持SSLv3。

兼容iPad时要注意以下问题

ERROR ITMS-90474: "Bundle Invalid. iPad Multitasking support requires there orientations:'UIInterfaceOrientationPortrait,
UIIinterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,
UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationPortrait' in bundle.t submit to Apple

这是由于提交app适配ios9的ipad的分屏导致的,只要如下图操作就可以了

OpenUrl使用方法被废弃

在iOS10版本之前,直接使用[[UIApplication sharedApplication] openURL方法就跳转指定网页和链接
目前已经在iOS10已经被废弃

编译器Xcode8新建项目的工程配置

注意:在Xcode8工程配置的general选项卡中,使用更详细signing选项替换了原有的team选项。
使用Xcode8打开工程后,项目的provisonfile配置出了问题
进入工程之后选中你的项目文件依次点击:
project->target->general
查看并进行手动配置

判断系统版本

在iOS10中读取不到iOS10的系统版本
简单的操作就能判断是否是iOS10:

if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){.majorVersion = 9,
 .minorVersion = 1, .patchVersion = 0}]) { NSLog(@"Hello from > iOS 9.1");}

if ([NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){9,3,0}])
{ NSLog(@"Hello from > iOS 9.3");}

if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_9_0) { // do stuff for iOS 9 and newer}
else { // do stuff for older versions than iOS 9}

UILable的文字显示问题

在iOS10中字体发生了变化,这导致一些文字在原有的宽高约束下可能会出现显示不完整或者留白的情况,单行UILabel使用label.adjustsFontSizeToFitWidth = YES;进行调整

安全传输协议

iOS 10 中info.plist文件新加入了NSAllowsArbitraryLoadsInWebContent键,允许任意web页面加载,苹果会用 ATS 来保护你的app,安全传输不支持SSLv3。

Xcode8之后上传注意

  1. ios10推送获取不到devicetoken 注意在xcode8上要打开push Notifications
  2. 证书管理
    用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing。
  3. Xcode8上传应用包成功后,iTunes里不显示构建版本
    iOS10、Xcode8升级以后,打包使用Application Loader上传应用时,应用上传成功,但是在商店里却找不到构建版本,连“+”都没。

    于是找资料才发现,从iOS10开始,苹果更加注重对用于隐私的保护,app里边如果需要访问用户隐私,必须要做描述,所以要在plist文件中添加描述;

    或者在此处勾选需要添加的权限

    注意,添加的时候,末尾不要有空格(标记*号三项必须的)
    (*) 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
    (*)相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
    (*)相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?
    通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
    蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
    日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?
    定位权限:Privacy - Location When In Use Usage Description访问地理位置
    定位权限: Privacy - Location Always Usage Description 访问地理位置
    定位的需要这么写,防止上架被拒。
    如果你自认为你添加了权限,但是打包上传之后商店中还是没有显示版本构建,那么就是被拒了,因为没有显示版本构建原因就是权限问题,这时你要做:
    (1)查看苹果发给你审核结果的邮件,看具体问题在哪了
    (2)返回plist文件中,删除之前的权限,重新添加一下吧(有可能你哪不小心添加的权限末尾有空格,或者字段不对),博主就是这样添加权限还不显示,查了都是说权限问题,只有重新删除添加一遍就出来了,这时你会发现–活动(显示你构建的所有版本)中有你新构建的版本了(博主权限添加有问题时这里都没显示新构建的版本),如下

    那么这时构建版本也会有+号,添加以下

在plist文件里添加这几个字段(可以根据自己APP的情况,来添加),重点是:要在后面添加描述,如果不添加描述,跟没加是一样的,苹果还是会拒绝(最基础是带*的前三项添加)

Xcode8出现的一些常见问题的更多相关文章

  1. Xcode8 及iOS10适配问题汇总

    上点干货,目前得知的一些bug解决汇总:iOS10相册相机闪退bughttp://www.jianshu.com/p/5085430b029fiOS 10 因苹果健康导致闪退 crashhttp:// ...

  2. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  3. SQL Server常见问题介绍及快速解决建议

    前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题.这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 下面一些问题是 ...

  4. 【腾讯优测干货分享】如何降低App的待机内存(二)——规范测试流程及常见问题

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/806TiugiSJvFI7fH6eVA5w 作者:腾讯TMQ专项测 ...

  5. xcode8.1 插件失效的问题

    1,查看 Xcode 插件安装目录 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 鼠标点一下桌面, command+shi ...

  6. mysql数据库开发常见问题及优化

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  7. 《PDF.NE数据框架常见问题及解决方案-初》

    <PDF.NE数据框架常见问题及解决方案-初> 1.新增数据库后,获取标识列的值: 解决方案:    PDF.NET数据框架,已经为我们考略了很多,因为用PDF.NET进行数据的添加操作时 ...

  8. MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)

    最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题.这里写一篇文章,总结一下这几类问题,以及其对应的解决方案.方便其它项目组参考.   常见问题一:打开页面非常慢,有 ...

  9. xcode8 storyboard 控件显示错位

    升级xcode8 后选择device 为6s 出现上面的情况,控件显示异常.使用Update Frame 显示正常.不能选择Update Constraints   如果误选 commend + Z ...

随机推荐

  1. 【linux之sed及vim】

    一.sed sed 文本处理工具 流编辑器 行编辑器保留空间模式空间sed不会影响原文件的内容,它处理的是它载入模式空间的内容 sed [options].."AddressCommand& ...

  2. [TJOI 2010]中位数

    Description 给定一个由N个元素组成的整数序列,现在有两种操作: 1 add a 在该序列的最后添加一个整数a,组成长度为N + 1的整数序列 2 mid 输出当前序列的中位数 中位数是指将 ...

  3. [测试题]wows

    Description 山山最近在玩一款游戏叫战舰世界(steam 游戏太少了),他被大舰巨炮的魅力折服,于是山山开了一局游戏,这次发现目标是一艘战列舰新墨西哥级,舰桥很高,原本应该打在目标身后的圆形 ...

  4. BZOJ 3817 Sum

    Description 给定正整数N,R.求 Input 第一行一个数 T,表示有 T 组测试数据. 接下来 T 行,每行两个正整数 n,r. Output 输出 T 行,每行一个整数表示答案. Sa ...

  5. noip模拟题-赛斯石

    题目背景 白露横江,水光接天,纵一苇之所如,凌万顷之茫然.--苏轼 真程海洋近来需要进购大批赛斯石,你或许会问,什么是赛斯石? 首先我们来了解一下赛斯,赛斯是一个重量单位,我们用sisi作为其单位.比 ...

  6. Codeforces Round #438 C. Qualification Rounds

    Description Snark and Philip are preparing the problemset for the upcoming pre-qualification round f ...

  7. hzoj 2301(莫比乌斯反演)

    题意 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公 数. 思路: 与先前的那个相比,这次a,c并不一定 ...

  8. Win10无法删除文件提示“你需要来自system的权限”

    不得不说win10的管理权限非常迷 windows10用户在删除文件时,就会遇到错误提示"你需要来自SYSTEM的权限才可以对此文件夹进行更改".以下是具体解决方法.   解决方案 ...

  9. cocos2d-x-3.0beta2创建项目遇到“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9: ordinal not in range(128)”的问题

    在Windows平台下 用cocos2d-x-3.0beta2版本下的create_project.py工具创建项目 但是遇到如下问题:UnicodeDecodeError: 'ascii' code ...

  10. 《Java技术》的第二次作业

    (一)学习总结 1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么? (1) 构造方法用于在创建对象时对其进行初始化,且方法名与类名相同,方法名前面没有返回值类型的声明,不能 ...