02-常见的2个bug

iOS开发中两个常见问题的处理

2015-05-16  iOS开发

(一) “Unknown class XXViewController in Interface Builder file.” 问题处理

最近在静态库中写了一个XXViewController类,然后在主工程的xib中,将xib的类指定为XXViewController,程序运行时,报了如下错误:


1

Unknown class XXViewController in Interface Builder file.

之前也遇到这个问题,但已记得不太清楚,所以又开始在stackoverflow上找答案。

其 实这个问题与Interface Builder无关,最直接的原因还是相关的symbol没有从静态库中加载进来。这种问题的处理就是在Target的”Build Setting”–>“Other Link Flags”中加上”-all_load -ObjC”这两个标识位,这样就OK了。

(二)关于Unbalanced calls to begin/end appearance transitions for …问题的处理

 

我们的某个业务有这么一个需求,进入一个列表后需要立马又push一个web页面,做一些活动的推广。在iOS 8上,我们的实现是一切OK的;但到了iOS 7上,就发现这个web页面push不出来了,同时控制台给了一条警告消息,即如下:


1

Unbalanced calls to begin/end appearance transitions for ...

在这种情况下,点击导航栏中的返回按钮时,直接显示一个黑屏。

我们到stackoverflow上查了一下,有这么一段提示:


1

occurs when you try and display a new viewcontroller before the current view controller is finished displaying.

意思是说在当前视图控制器完成显示之前,又试图去显示一个新的视图控制器。

于是我们去排查代码,果然发现,在viewDidLoad里面去做了次网络请求操作,且请求返回后就去push这个web活动推广页。此时,当前的视图控制器可能并未显示完成(即未完成push操作)。


1

Basically you are trying to push two view controllers onto the stack at almost the same time.

当 几乎同时将两个视图控制器push到当前的导航控制器栈中时,或者同时pop两个不同的视图控制器,就会出现不确定的结果。所以我们应该确保同一时间,对 同一个导航控制器栈只有一个操作,即便当前的视图控制器正在动画过程中,也不应该再去push或pop一个新的视图控制器。

所以最后我们把web活动的数据请求放到了viewDidAppear里面,并做了些处理,这样问题就解决了。

猿圈 (ID: CodePush)(←长按复制)

为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等。并不定期奉送各种福利。

时间: 2024-10-25 12:07:39

02-常见的2个bug的相关文章

iOS常见崩溃情况以及bug调试解决方法

本博客会不定期更新,将我在项目中常见的崩溃情况进行整理后分享给大家: 1.unrecognized seletor.错误:这种情况很简单,给一个对象发送了一条它不认识的消息.比如说你的.h中声明了某一个方法,但是.m中却没有实现,而且你没有对异常消息处理(消息转发)就会造成这种现象.解决办法:首先排查自己的某一些方法是否实现,其次看一下哪些对象接收了它不该接收的消息. 2.index 1 beyond NSArraMu [0,0]数组越界:数组越界这个不多说. 3.NSNul length 这个

前端开发中常见的一下漏洞bug

1.IE6下横向双倍margin bug (触发条件:块属性标签:float:横向margin设置:IE6下.解决办法:css中加入display:inline.) 2.css中公用属性首先声明:如对浏览器对某些标签有默认的margin 和padding 值首先声明默认值为0. 3.css中class类名必须有实际的意义,必须与内容相关:不得用纯数字用于class类名. 4.IE6下标签嵌套时,如果内层标签float,只有清除内层标签的浮动后外层标签才能被撑开. 5.清除浮动时用div而不用其它

02 常见物联网通信技术

两类技术: 有线通信技术 无线通信技术 一. 有线通信技术 1.1 物联网有线技术介绍及对比 ETH 主要用于支持以太网标准的智能终端的连接使用. M-BUS .PLC.RS-485是现在物联网常用的规模通信方式. 1.2 物联网RS-485与M-BUS介绍及对比 1.3 物联网电力载波PLC技术介绍 电力载波通讯PLC(英文:Power line communication)是电力系统特有的通信方式,电力载波通讯是指利用现有电力线,通过载波方式将模拟或数字信号进行高速传输的技术.最大特点是不需

浏览器bug和修复2

拥有布局 Window IE上的bug要比其他浏览器多,原因之一是,IE的显示引擎使用一个称为布局(layout)的内部概念.因为布局是专门针对显示引擎内部工作方式的概念,所以一般情况下不需要了解它,但是,布局问题是许多IE/Win显示bug的根源,所以理解这个概念以及它如何影响CSS是有帮助的. 什么是布局 Windows上的IE使用布局概念来控制元素的尺寸和定位.那些称为拥有布局(have layout)的元素负责本身及其子元素的尺寸和定位.如果一个元素没有拥有布局,那么它的尺寸和位置由最近

常见的appbug(转)

移动App Bug的影响是用户体验差.App的商店评级下降.用户换用竞争对手的App,声誉和信誉损失.最后销售量减少,如果它是一个付费App的话. 移动App测试与传统台式机测试相比有一定的复杂性.这些复杂性可以被分类为: 环境(大量的设备,各种移动OSs,适应频繁OSs变化) . 设备(触摸式和非触摸式设备,有限的内存容量,电池耗电量) . 网络(不同的网络和运营商,在不好或无网络的情况下的App行为,离线支持) . 可用性(方向,触摸,多触摸,缩放,分页和导航的局限性,各种干扰,如来电,来电

python初体验-常见错误类型

我们写代码的过程中,难免会因为粗心.手误.知识点掌握不熟练等原因,导致程序运行报错无法运行或运行结果与预期不符. 看一下比较常见的两种 bug: SyntaxError:语法错误,表示你写的代码不符合 Python 的语法规范.比如字符串使用了中文引号等. NameError:名字错误,常见于使用了未定义的变量. 例子:print(‘python编程’) # 报错:SyntaxError: bad token on line 1 # 第一行的字符串使用了中文引号 # debug 后代码如下 pr

数据迁移,iis的各种坑

最近在搞iis发布  本来在家里实验过很多次 都是可以的 觉得很容易!但是到客户现场去试的时候发现各种坑 在这里给大家说说  望大家注意点哈! 首先:数据迁移先是备份数据库,然后再还原  这个地方一定要注意数据库版本问题,比如你如果在sqlserver2012上备份的,到sqlserver2008版本上还原就不行,因为这是高版本还原到低版本了 就不兼容,但是低版本还原到高版本就可以! 第二步:还原好了数据库,vs代码要配置服务器了,也要注意个问题:因为vs配置的是sqlserver的sql认证账

对于软件开发中开发人员与测试人员关系的理解

在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试.在这里我仅针对于有专业的测试和专业的开发的项目. 每个公司应该都有考核机制,对于开发和测试的考核实际上很难量化,通常来讲大的方向就是开发所负责模块的bug数,对于测试来讲就是测出来的bug数,但这真的有效吗?这也许对开发有约束力,理论上开发是能够自己控制bug数的,如果从产生的bug数来评判开发的绩效还算有效,这样开发自然就会把代码写得更加认真.但如果根据测试测出来的bug数来

Asdcplib Update logs

Current stable version Download version 1.12.60MD5 digest value: = 3bb2754744a629813e4db816e081e114 change log: 2015-02-23 – 优化, 1.12.60 Fixed ST 429-5 wrapping to increase header space when ancillary resources are present (fixes a bug that cause the

app经常崩溃原因解析【转帖】

介绍 我们的日常生活中对移动设备越来越多的使用意味着移动App测试这个主题已成为需要考虑的一个无法避免的问题.根据最近的调查研究,用户难以容忍有bug的移动App. 移动App Bug的影响是用户体验差.App的商店评级下降.用户换用竞争对手的App,声誉和信誉损失.最后销售量减少,如果它是一个付费App的话. 移动App测试与传统台式机测试相比有一定的复杂性.这些复杂性可以被分类为: 环境(大量的设备,各种移动OSs,适应频繁OSs变化) . 设备(触摸式和非触摸式设备,有限的内存容量,电池耗