xcode8升级之后项目遇到了问题,由于这个项目是我中途接手的,遇到的第三方也是自己没有用过的,

AQGridViewCell,这个第三方的类主要是用于处理图片的问题,xcode开发工具升级过后,报这样的错误iPhoneSimulator10.0.sdk/usr/include/objc/objc.h:204:16: 'objc_unretainedObject' has been explicitly marked unavailable here,主要是执行的这段代码

NSMutableDictionary * info = (NSMutableDictionary *) objc_unretainedObject(CFDictionaryGetValue(_selectionColorInfoobjc_unretainedPointer(view) ));

导致的报错,objc_unretainedObject点进去发现这是在苹果原生的类库 <objc/runtime.h> objc.h里面的

xcode8是这样(苹果原生的类库)

// Obsolete ARC conversions.

OBJC_EXPORT id objc_retainedObject(objc_objectptr_t obj)

    OBJC_UNAVAILABLE("use CFBridgingRelease() or a (__bridge_transfer id) cast instead");

OBJC_EXPORT id objc_unretainedObject(objc_objectptr_t obj)

    OBJC_UNAVAILABLE("use a (__bridge id) cast instead");

OBJC_EXPORT objc_objectptr_t objc_unretainedPointer(id obj)

    OBJC_UNAVAILABLE("use a __bridge cast instead");

xcode7.3.1的情况(苹果原生的类库)

但是在xcode 7.3.1程序是正常的,并没有任何报错,

xcode7.3.1是这样

#if __has_feature(objc_arc)

#   define objc_retainedObject(o) ((__bridge_transfer id)(objc_objectptr_t)(o))

#   define objc_unretainedObject(o) ((__bridge id)(objc_objectptr_t)(o))

#   define objc_unretainedPointer(o) ((__bridge objc_objectptr_t)(id)(o))

#else

#   define objc_retainedObject(o) ((id)(objc_objectptr_t)(o))

#   define objc_unretainedObject(o) ((id)(objc_objectptr_t)(o))

#   define objc_unretainedPointer(o) ((objc_objectptr_t)(id)(o))

#endif

最后通过谷歌,将代码改成以下之后,完美没有任何问题

NSMutableDictionary * info = (NSMutableDictionary *) (CFDictionaryGetValue( _selectionColorInfo, (__bridge   void *)(view) ));可见苹果去掉了宏,

objc_unretainedObject也被废弃,转而使用了(__bridge   void *)来代替,通过网络查询得到(__bridge void*)和objc_unretainedPointer,objc_unretainedObject区别

/*

* ARC有效时三种类型转换:

*/

1、__bridge          // 转换

2、__bridge_retained // 转换

3、__bridge_transfer // 转换

// __bridge 转换 //////////////////////

// ARC无效时 对应的代码

id obj = [[NSObject alloc] init];

void *p = obj;

id o = p;

[o release];

// 在 ARC 有效时 通过 __bridge转换 id 和 void * 就能够相互转换

id obj = [[NSObject alloc] init];

void *p = (__bridge void *)obj;

id o = (__bridge id)p;

void *p = (__bridge void *)obj;

id o = (__bridge id)p;

/*

* 通过 __bridge 转换, id 和 void * 就能够相互转换。

* 但是转换为 void * 的 __bridge 转换,其安全性与赋值给 __unsafe_unretained 修饰符相近,

* 甚至会更低。如果管理时不注意赋值对象的所有者,就会因悬垂指针而导至程序崩溃。

*/

// __bridge 转换 //////////////////////

可见在ARC有效的时候是使用__bridge  来进行类型的转换想要了解自己可以往上面查一下
 
 
 
 
升级xcode8已是必然,升级ios10的用户不能说大有人在,应该也不会少,楼主听说,如果不升级xcode8,上架最新的包,那么可能应用在ios10 上是不支持的.

so,这些xcode8的新特性,你应该了解!!!



1.快捷键  command + /   注释失效; 解决方法1: Xcode -> preferences -> key bindings 中的comment selection 是否设置上快捷键了  解决方法2:http://blog.csdn.net/jnbbwyth/article/details/52576169 第四个问题详解



2.真机测试不在支持ios8.0以下版本; (已解决)追加:xcode8支持ios8以下真机测试方法:1.应用程序-xcode 显示包内容-Contents-Developer-Platforms-iPhoneOS.platform-DeviceSupport 把里边 6.0 6.1 7.0 7.1 的文件夹粘贴到xcode8 对应的文件夹内  2. 应用程序-xcode 显示包内容-Contents-Developer-Platforms-iPhoneOS.platform-Developer-SDKs-iPhoneOS.sdk-SDKSettings.plist 文件下DefaultProperties - DEPLOYMENT_TARGET_SUGGESTE... 该数组中添加 6.0 6.1 7.0 7.1 对应的测试版本,(注意:如果你的文件是只读模式的,那么是不能修改的,你需要把Contents-Developer-Platforms-iPhoneOS.platform-Developer-SDKs-iPhoneOS.sdk-SDKSettings.plist 这些文件的只读模式都改成读写模式)这个版本排序一定要是从小到大,直接把小的添加到下面是不管用的,必须把小的拖到最上边.这个时候退出你的Xcode,然后重新启动,你就会发现ios8.0以下的真机 也可以正常测试了 非常感谢ID:84447879  的建议方法.分享给大家. 



3.如果项目中包含证书,证书内包含的Id 必须与 bundle Id 保持一致才行,开发者team账号必须创建了 该 bundle Id 对应的证书,就是说不是所有的苹果账号都能真机测试了(这里说的是项目中有  证书的前提下)



4.使用Xcode 8创建新项目的时候,会让你选择开发者team为了自动生成对应的证书。在新老项目的General中也可以对签名进行设置,勾选自动管理证书(可选的),Xcode会自动替你生成调试证书和描述问题,证书与描述文件有效期为6天,避免了大量的垃圾冗余证书占用问题。



5.- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error;  变成了- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error



6.版本target 从8.0 起步了,但是老代码的7.1 用xcode8 打开还是显示7.1 ,就是不知道起不起作用了.追加:可以手写输入7.1,仍然管用.



7.之前两个汉字占用24宽度,现在占用27了,导致部分UI可能需要重新适配; 或者判断下当前系统版本,如果>=10.0,就让需要适配的控件调用  sizetofit  方法.



8.麦克风权限: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 - Speech Recognition Usage Description 是否允许此App使用语音识别?

日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?

定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据

定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据



9.引用:45楼:Dcook -> MJRefresh iOS10的系统上每次下拉刷新后没办法完全恢复Normal 状态  Y轴距离上总是相差20左右...(楼主个人也使用的MJ,表示暂时没有发现这个问题)

解决方案 http://www.cnblogs.com/dev1024/p/5889865.html 



10.引用:雨季的雾  ItunesConnect上传遇到问题,ERROR ITMS-90682: "Invalid Bundle. The asset catalog at 'Payload/ElitePlus.app/Assets.car' can't contain 16-bit or P3 assets if the app is targeting iOS releases earlier than iOS 9.3."   解决方法:http://www.cnblogs.com/zyonbao/p/5872943.html     http://www.jianshu.com/p/b13e1e441116



11.iOS 10 因苹果健康导致闪退 crash   原文链接:http://www.jianshu.com/p/545bd1bf5a23

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSHealthUpdateUsageDescription must be set in the app's Info.plist in order to request write authorization.'



12.引用79楼:新增了CAAnimationDelegate  ,之前使用CAAnimation的文件需要强制添加代理



好文章推荐1: http://blog.csdn.net/jnbbwyth/article/details/52576169   (内含:1.证书管理 2.xib注意事项 3.代码及Api注意 4.代码注释不能用的解决办法 5.权限以及相关设置 6.字体变大,原有frame需要适配 7.推送 8.屏蔽杂乱无章的bug)



好文章推荐2:转自 舞小月 http://www.cocoachina.com/bbs/read.php?tid-1695563.html

iOS10相册相机闪退bug

http://www.jianshu.com/p/5085430b029f

iOS 10 因苹果健康导致闪退 crash

http://www.jianshu.com/p/545bd1bf5a23

麦克风、多媒体、地图、通讯录

ios10相机等崩溃

http://www.jianshu.com/p/ec15dadd38f3

iOS10 配置须知

http://www.jianshu.com/p/65f21dc5c556

iOS开发 适配iOS10以及Xcode8

http://www.jianshu.com/p/9756992a35ca

iOS 10 的适配问题

http://www.jianshu.com/p/f8151d556930



问题汇总:(待解决)



1.引用36楼:状态栏隐藏失效了  

- (BOOL)prefersStatusBarHidden{

    return YES;

}



2.引用37楼:APP切到后台 然后从后台切回APP就闪退了 升级到IOS10各种莫名其妙的闪退怎么回事 



3.引用44楼:xcode8使用source control 中git提交代码也有点不正常,远端存在一个master分支和一个dev分支,我这边本地有master dev 再多一个coder1的分支,当切换到coder1分支上无法拉取dev或者master上的代码,只有切换到master或者dev上才能拉取 



4.引用27楼:nslog信息打印不全 



5.引用50楼:请问ImagePickerController.cameraViewTransform这个属性在iOS10是不是不能用了? 



6.引用57楼:app在iOS10上无法访问网络,打开app不弹出是否允许使用网络弹窗,在设置-无线局域网-使用无线局域网与蜂窝移动的应用里也无法看到该app,有些机子重启或者还原网络设置可以解决,这是系统BUG么?



7.引用35,64楼:Xcode8 + iOS8 进入断点很卡,何解?



持续更新中...

[ 此帖被wo709128079在2016-09-26 10:57重新编辑 ]
图片:屏幕快照 2016-09-20 上午11.10.23.png

xcode8.0升级之后公司项目遇到的问题的更多相关文章

  1. xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)

    xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...

  2. UiAutomator2.0升级填坑记

    UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sk ...

  3. 我是如何在公司项目中使用ESLint来提升代码质量的

    ESLint:你认识我吗 ESLint是一个语法规则和代码风格的检查工具. 和学习所有编程语言一样,想要入门ESLint,首先要去它的官网看看:https://eslint.org/. ESLint的 ...

  4. 【开源】SpringBootNetty聊天室V1.2.0升级版本介绍

    前言 SpringBoot!微服务微架构的基础,Netty通信框架的元老级别框架,即之前的SpringBoot与Netty的实现聊天室的功能后已经过了不到一周的时间啦,今天我们更新了项目版本从V1.0 ...

  5. Spring Boot 2.0 版的开源项目云收藏来了!

    给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑 先给大家晒一下云收藏的几个数据,作为一个 Spring Boot 的开源项目(https://github.com/cl ...

  6. react-router 4.0 升级攻略

    react-router 4.0 出来好9了,项目在4月份的时候对react-router进行了升级,升级耗费了3天,一个坑一个坑踩了过来. 按照公司项目情况说下升级改了哪些,项目使用的是hashHi ...

  7. jackson2.5.0升级到2.7.0

    开发环境:spring-mvc4.1.7.jackson2.7.0 问题描述:项目中将原来的jackson2.5.0升级到2.7.0,导致服务调用出错. mvc相关的配置文件如下: <?xml ...

  8. Java进阶(二十六)公司项目开发知识点回顾

    公司项目开发知识点回顾 前言 "拿来主义"在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪. 在一次实验过程中,需要实现数据库的CRUD操作.由于之前项目开发过程中, ...

  9. Spring Boot 2.0 升级指南

    Spring Boot 2.0 升级指南 前言 Spring Boot已经发布2.0有5个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把项目中Spring Boot 版本做了升级,顺便整理下 ...

随机推荐

  1. 探索 Linux 系统的启动过程

    引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...

  2. webpack搭建前端一条龙服务

    作为从grunt.gulp一路走来的老码农,一开始用webpack的时候我是很抗拒的.但由于核心库使用了vue,而webpack又是vue的最佳拍档(vue作者专门为其写了vue-loader),所以 ...

  3. 访问IIS网站需要输入用户名密码(非匿名登录)问题汇总

    无语了,最近不少Windows服务器都出现这个访问网站需要输入的问题,而且每次解决方法还不一样...唉,先汇总下解决方法吧,有时间再仔细研究下这些问题是如何导致的. 当IIS已启用"允许匿名 ...

  4. Java回调方法详解

    回调在维基百科中定义为: 在计算机程序设计中,回调函数,是指通过函数参数传递到其他代码的,某一块可执行代码的引用. 其目的是允许底层代码调用在高层定义的子程序. 举个例子可能更明白一些:以Androi ...

  5. How to debug .NET Core RC2 app with Visual Studio Code on Windows?

    Simone Chiaretta (http://codeclimber.net.nz/archive/2016/05/20/How-to-debug-NET-Core-RC2-app-with-Vi ...

  6. 从零开始编写自己的C#框架(11)——创建解决方案

    这段时间一直在充电,拜读了园子中大神们的博文(wayfarer的<设计之道>.TerryLee的<.NET设计模式系列文章>.卡奴达摩的<设计模式>还有其他一些零散 ...

  7. MVC默认路由实现分页-PagerExtend.dll

    这两天在群里有人咨询有没有现成的.net mvc分页方法,由此写了一个简单分页工具,这里简单分享下实现思路,代码,希望能对大家有些帮助,鼓励大家多造些轮子还是好的. A.效果(这里用了bootstra ...

  8. 用php实现一个简单的链式操作

    最近在读<php核心技术与最佳实践>这本书,书中第一章提到用__call()方法可以实现一个简单的字符串链式操作,比如,下面这个过滤字符串然后再求长度的操作,一般要这么写: strlen( ...

  9. 从.NET和Java之争谈IT这个行业

    一.有些事情难以回头 开篇我得表名自己的立场:.NET JAVA同时使用者,但更加偏爱.NET.原因很简单 1.NET语言更具开放性,从开源协议和规范可以看出; 2.语言更具优势严谨; 3.开发工具V ...

  10. LINQ to SQL语句(18)之运算符转换

    运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...