zoukankan      html  css  js  c++  java
  • 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等等。并不定期奉送各种福利。
  • 相关阅读:
    ASP.NET验证控件的使用 拓荒者
    读书笔记:MFC单文档应用程序结构分析 拓荒者
    MFC单文档(SDI)全屏程序的实现 拓荒者
    jQuery的animate函数
    设备尺寸杂谈:响应性Web设计中的尺寸问题
    Yeoman学习与实践笔记
    IE对文档的解析模式及兼容性问题
    推荐给开发和设计人员的iPad应用
    几个移动应用统计平台
    颜色、网页颜色与网页安全色
  • 原文地址:https://www.cnblogs.com/iyuanxiaojun/p/4509521.html
Copyright © 2011-2022 走看看