xCode中常见的错误分析

程序中报错:@synthesize of ‘weak’ property is only allowed in ARC or GC mode的解决方法

现在的项目是手动内存管理,所以在引入第三方资源库时候,很多资源库更新以后都开始使用arc进行编码,这样就导致两种代码风格不一致,有的时候可能开发者也没有注意到这些问题,反正用的时候也没有报错,就直接使用了;但是有的时候,因为arc编码中用到了新的属性修饰符,例如weak,这时候在手动管理内存的代码中就不能编译通过,报错的内容就是:@synthesize of ‘weak’ property is only allowed in ARC or GC mode,这就是引入的arc代码在项目中的冲突,有一种解决办法就是把资源代码中的weak修饰符改为assign,但是这种方法毕竟是把别人写的代码给改了,有的时候往往会出现闪退、崩溃的问题。

比较好的解决办法就是项目配置文件->Build Phrases->Complie Sources,找到出现问题的资源库文件(比如weak修饰符所在的文件),双击Complie Files中的该文件,在空白行中写入-fobjc-arc,这样就可以有效防止该冲突。反过来有的时候,在arc代码中引入手动管理内存的代码,我们在Complie Files中为新增的资源文件增加-fno-objc-arc,这样就避免了手动管理内存的代码在arc代码中的冲突。


BMKGeoCodeSearch 反向地理编码一直失败 Location

申请的key的安全码与代码中build id不一样,修改成一样就OK了


新建一个类,将百度地图的定位功能封装起来以后,定位的代理方法不走

定位是要一直持续的,而我们新建这个类,如果不设置成,staic静态变量,他就会自动销毁,对象销毁以后肯定不会定位了。


ios8系统 点击设置隐私定位功能直接崩溃的问题

这个问题出现的原因肯定不是ios8系统的问题,因为其他app都好的,为什么你的APP就有问题,肯定是你加代码的时候什么地方写错了。

我对照代码找了好几遍,终于发现有个地方和别人的不一样,那就是设置plist文件变量的时候Type类型BOOl应该是String。估计苹果是通过字符串对比来判断的,所以BOOl类型就直接崩溃了。


使用cateogry调用不了类目里的方法

需要在被扩展的类的.m文件中,导入你所扩展的类,在类目中不能声明变量


弹出不同步 同一时间下来上拉刷新两次,有时数据源数组会是空造成奔溃

数据源数组采用懒加载,另外记得给数组赋nil,最好这样做。


输入框与键盘的弹出不同步

这表明监听键盘错误,应该监听的是键盘将要显示的通知,而不是键盘显示出以后的通知


-[UITableView _configureCellForDisplay:forIndexPath:]

因为- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个函数的返回值中有nil


问题 Xcode 工程文件打不开,cannot be opened because the project file cannot be parsed. (代码更新时,可能有这种情况)

解答 这是因为.xcodeproj工程文件冲突了

冲突消息信息

<<<<<<< .mine 9ADAAC6A15DCEF6A0019ACA8 …. in Resources /, ======= 52FD7F3D15DCEAEF009E9322 … in Resources /, >>>>>>> .r269

解决方法: 1.对.xcodeproj 文件右键,显示包内容

2.双击打开 project.pbxproj 文件

3.找到以上类似的冲突信息(可以用commad + f 搜索)

4.删除 <<<<<<<,======,>>>>>>这些行

5.保存,退出

6.重新打开.xcodeproj文件即可


问题 使用arc编写的文件,如何不用删release

解答 在build phases 的complies sources设置中将相应的文件设置为-fno-objc-arc


问题:libxml/tree.h file not found解决办法

解答:1. 导入libxml2.dylib 包

  2.设置Header Search Paths 为 /usr/include/libxml2 如图:

    ![这里写图片描述](http://img.blog.csdn.net/20160421084710872)

问题:__dns_free_resource_r_dns_free环信SDK集成EaseMobSDK

“_dns_free_resource_record”, referenced from: -[XMPPSRVResolver processRecord:length:] in libEaseMobClientSDKLite.a(XMPPSRVResolver.o)

这样的错误,是由于缺少库:

添加libresolv.dylib库,就可以了

使用上拉下拉刷新方法时,如果跳出该界面接记得释放上拉下拉刷新类(老版本的MJRefresh)

不能在viewdidload中跳转控制器


问题:AFNetworking请求中含中文时程序崩溃

AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {//} failure:^(AFHTTPRequestOperation *operation, NSError *error) {//}];

出现error:

Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:]

需要处理urlString的编码

urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


彻底解决OBJC_CLASS$_某文件名”, referenced from:问题

http://www.cnblogs.com/g-ios/p/4625907.html

Receiver type ‘TableViewCellFrame’ for instance message is a forward declaration

这往往是引用的问题。ARC要求完整的前向引用,也就是说在MRC时代可能只需要在.h中申明@class就可以,但是在ARC中如果调用某个子类中未覆盖的父类中的方法的话,必须对父类.h引用,否则无法编译。


程序发布后,发现一个bug,需要在自己手机调试时,出现:a valid provisioning profile for this executable was not found错误.

是因为发布的时候把schema里的”Build Configuration”改成了release。而release对应的provision是用发布证书的。把”Build Configuration”改成了debug就好了。

because the App Transport Security policy requires the use of a secure connection


网络访问失败。

输出错误信息:
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
Google后查证,iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)

新特性要求App内访问的网络必须使用HTTPS协议。

但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。

最终找到以下解决办法

在Info.plist中添加NSAppTransportSecurity类型Dictionary。

在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

参考:

App Transport Security support aka apps on iOS 9 don’t work #4560

711_networking_with_nsurlsession.pdf

总结:

苹果正在加大应用安全的管控,这个举措可以看出苹果对信息安全的重视,也暴露出大部分应用传输数据时都是未经过加密的,或使用私有方式加密,以至于苹果开始对开发者提出要求。

私有加密虽然一定程度上是安全的,但是终究不是一个长久之计。全世界这么多安全专家在维护HTTPS安全,早日使用HTTPS确保信息安全才是王道!也省去了私有加密协议的安全隐患!

当更新xcode后,再次打开svn他将提示xcode/develop不存在,并且让你用xcode-select切换成你当前使用的xcode。

如下: sudo xcode-select -switch /Applications/Xcode-beta.app/

这里的路径是最容易出错的,我当时就被他弄迷了 搞了好长时间 记录这个是硬盘下的application并不是用户里的application,还有就是文件名,尽量让他自己提示出来,避免出错


: Couldn’t materialize: couldn’t get the value of variable result: variable not available

Errored out in Execute, couldn’t PrepareToExecuteJITExpression

这种报错更直观的表现是,一句代码一执行,所创建的对象将会立马变成空,但不影响使用

coredata Can’t merge models with two different entities named ‘MessageModel’

这种错误是因为工程内部自动生成了一个.xcdatamodeld文件,解决办法就是 将该文件删除,clean,然后将软件从测试机或真机中删除,再运行

uitableView 不走datasource方法

代理没挂 行数或者段数设置为0 uitableview的frame为0

Phone开发】“此证书是由未知颁发机构签名”解决方法

问题原因:

之前在keychain(钥匙窜访问)中多删了一个证书:Apple Woldwide Developer Relations Certification Authority,它是iPhone Developer证书的签发者,如果它被删除就会导致iPhone Developer证书被识别为未知颁发机构签名,然后xcode中真机调试就会出现上面的错误。

解决办法:

重新把AppleWWDRCA放回去;从Apple官网(http://www.apple.com/certificateauthority/)下载一个,下载后拖入keychain(钥匙窜访问)-登录目录。

如果想重新生成证书,Apple是允许的,只要不修改App Id就Ok。

Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “E9823ESPAM” were found.

证书出现这种问题时第一反应不要认为是证书除了问题,要查看target里的CDL与CDLtest里面是否设置了一样的配置文件。

A valid provisioning profile for this executable was not found. 真机调试

自从XCode支持自动维护证书之后,省去了我们手动添加设备再更新完证书之后下载的麻烦,但一直都没有搞明白自动维护的机制,导致经常出现XCode报错却不自动添加设备,同时由于证书是XCode创建的,又无法手动修改的问题。经过一段时间的测试,终于找到了解决办法,在这里分享给大家。

正常的情况应该是:

no provisioning profile was found for this executable

然后可以选择Fix Issue,这样XCode就会自动为我们将新的设备添加到证书里,再自动更新证书。可能遇到的错误如下:

A valid provisioning profile for this executable was not found

解决方法是

1. 在Target的General界面中将Team改为所对应的开发者账号团队

2. 在Target的Build Settings中的Code Signing Identity都改为iOS Developer(这里不能选择自己的),Provisioning Profile改为Automatic

3. 此时Clean之后再运行,就可以出现Fix Issue的对话框,选择Fix Issue即可。

时间: 2024-10-28 15:56:34

xCode中常见的错误分析的相关文章

iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握. expression:表达式assignable:赋值variable:变量redefinition:重复定义type:类型conflicting:冲突项invalid:无效的conversion:转换specifier:说明符indent:缩进operands:运算对象.操作数binary:二

OC Xcode中常见的错误

在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握. expression:表达式 assignable:赋值variable:变量+redefinition:重复定义type:类型conflicting:冲突项invalid:无效的conversion:转换specifier:说明符indent:缩进operands:运算对象.操作数binary

一些Xcode中常见的小知识

一  #pragma 是一条编译器指令有如下作用: 1.#pragma mark - 2.#pragma mark 和上边类似,就是么有那条横线了!

Xcode中常见的错误,警告和解决方法

1.Info.plist Utility Error: “Info.plist couldn't be opened because there is no such file”  有时候你从一些网站下载的代码编译会出现如下错误:   可能原因: 有可能是在删除“XXXTests”文件夹时,没有彻底删除,导致还有残留,结果报错. 解决: 就是彻底删除有关“XXXTests”的东西. 我的这边直接删除这里,程序就能成功编译了.  

在Xcode中使用Git进行源码版本控制

在应用程序开发过程中,很重要的一部分工作就是如何进行源码的版本控制.当代码出现问题时,我们就需要将代码恢复到原先正常的版本.如果是多个人共同开发一个项目,那么代码的控制就会非常复杂.幸运的是,开发者不需要自己控制这些,因为有专门的软件来负责,叫做版本控制系统. 版本控制系统,或者说修改控制系统,实际上是一种检测源文件的改变并将其保存留作以后参考使用的机制(软件).此外,它还能记录其他有用信息,比如是哪个开发者修改了代码,何时修改的,修改了哪一部分,以及其他历史信息.版本控制系统可以比较不同版本代

使用 Git 来管理 Xcode 中的代码片段

使用 Git 来管理 Xcode 中的代码片段 代码片段介绍 xcode4 引入了一个新 feature: code snippets,在整个界面的右下角,可以通过快捷键:cmd + ctrl + opt + 2 调出来.code snippets 是一些代码的模版,对于一些常见的编程模式,xcode 都将这些代码抽象成模版放到 code snippet 中,使用的时候,只需要键入快捷键,就可以把模版的内容填到代码中. 例如,在引入 GCD(Grand Central Dispatch) 后,当

转-----在Xcode中使用Git进行源码版本控制

在Xcode中使用Git进行源码版本控制 http://www.cocoachina.com/ios/20140524/8536.html 本文翻译自Understanding Git Source Control in Xcode (译者myShire)欢迎您加入我们的翻译小组. 在应用程序开发过程中,很重要的一部分工作就是如何进行源码的版本控制.当代码出现问题时,我们就需要将代码恢复到原先正常的版本.如果是多个人共同开发一个项目,那么代码的控制就会非常复杂.幸运的是,开发者不需要自己控制这些

ios开发——开发总结篇&amp;开发中常见错误和警告总结(五)

开发中常见错误和警告总结(五) 一.Missing file xxx 如果你在finder中删除了工程里面的文件,xcode上会出现一个警告,Missing file xxx, 有个警告在那恨事不自在.上网着了下,发现了如下解决方法: 1.打开terminal, cd 到刚才你删除的文件的文件夹,就是xcode提示你missing的文件夹 2.执行 svn delete missFileName  二.LLVM GCC Warning 4.3默认使用的是ARC编译,不是原来的GCC编译,所以你编

【原创】Newlife.XCode的常见功能使用(一)附X组件2015最新源码

你还可以参考本博客其他的XCode以及.NET开源项目的相关文章: Newlife XCode组件资源目录汇总[2013年版] 拥有自己的代码生成器—Newlife.Xcode模板编写教程 [原创]开源.NET下的XML数据库介绍及入门                      Newlife.XCode对象容器与接口操作实例 [转载总结]关于泛型基类的相关知识                              利用Xcode 20行代码搞定任何数据库的迁移 使用Xcode自动向数据库插