iOS 开发疑难杂症

转载 2016年05月30日 16:26:07

问题一:

  • 原因:
开发中有些页面需要隐藏NavigationBar,有些页面需要显示NavigationBar;在显示和隐藏的页面相互切换时,有时会导致页面错位, 特别是iOS7中,橫划手势返回上一级时取消橫划最容易导致页面错位。


  • 解决方法:
1. 在需要隐藏NavigationBar页面

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:NO];

}

2.在需要显示的页面中 -(void)viewWillAppear:(BOOL)animated {

[super viewWillDisappear:animated]; [self.navigationController setNavigationBarHidden:NO animated:YES];

}

-(void)viewWillDisappear:(BOOL)animated {

[super viewWillDisappear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES];

}

3.某些基于self.view.frame.size.height(视图高度)来定位坐标位置时,需要减去navigationBar的 坐标+高度;

如一个距离宽70、高70,距离底部15像素的一个视图,设置它的Y:

Y = self.view.frame.size.height - 70.f - 15.f - (self.navigationController.navigationBar.frame.origin.y + self.navigationController.navigationBar.frame.size.height);



问题二:

添加KISXML库时报self->isa = [DDXMLDocument class]; 'isa' is deprecated

  • 原因:由于KISXML库停止更新一段时间,添加KISXML库时会报错,self->isa = [DDXMLDocument class]; 'isa' is deprecated
  • 解决方法:

1.在报错.m文件中 加入 #include

2.把self->isa = [DDXMLDocument class]; 替换成 object_setClass(self, [DDXMLElement class]);


问题三:

  • 原因:移植主站代码时 报错:implicit declaration of function 'AFQueryStringFromParametersWithEncoding' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  • 解决方法:把 Build Settings 中 C Language Dialect GNU99[-std=gnu99] 改为GNU89[-std=gnu89]


问题四:

  • 原因:移植sdwebimage 会报clang: error: no such file or directory: '/UsersDownloads/SDWebImage-master/Vendors/libwebp/src/utils/random.c' clang: error: no input files;webp是谷歌发明的图片格式,sdwebimage为了支持所有图片格式加上的;
  • 解决方法:

1.删掉webp库

2.删除UIImage+WebP.h UIImage+WebP.m

3.删除#ifdef SD_WEBP {}#endif之间包含的代码


问题五:

  • 原因:提交失败(细节如下):  至少有一个属性变更失败;版本库未改变
      设置属性 “log” 出错: Could not execute PROPPATCH.
  • 解决方法:因为log信息copy自别的文档,隐藏了一些特殊字符,删除空格字符或者重新填写; 


问题六:

  • 原因:Xcode 5之后想删除多余的描述文件;
  • 解决方法:
  • 在Finder中 前往 : ~/Library/MobileDevice/Provisioning Profiles  删除相应描述文件即可

问题七:

  • 解决方法:
  • 1.忘记给webview设置frame,然后就出现了CALayerInvalidGeometry', reason: 'CALayer position contains NaN:的问题;或者webview 高度初始值为0 导致的;

    2.storyboardViewControllerframe设置中widthheight属性被设置为0造成的。另外,若是在程序代码中把某个Viewframewidthheight属性设置为0有可能也会引起以上错误。

    3.某些地方代码除以0,如UIView 的frame计算,width为0时,计算用到ivar/frame.size.width;


问题八:

  • 原因:使用 SDWebImage时,SDWebImage库直接把图片全部缓存在内存,重用的tableviewcell越刷内存占用越多。
  • 解决方法:要做合适的时候调用clearMemory方法;因为这些缓存都是放在memCache里;
- (void)clearMemory{
[self.memCache removeAllObjects];
}

问题九:

  • 原因:uplicate symbols for architecture i386 或者 duplicate symbols for architecture armv7 或者

    duplicate symbols for architecture armv7s或Undefined symbols for architecture i386:

  • 解决方法:下边出现的编译bug,不仅仅使用百度地图,但是加入第三方框架、静态库等都有可能出现

    1. duplicate symbols for architecture i386 或者 duplicate symbols for architecture armv7 或者

    duplicate symbols for architecture armv7s


    这一类,属于冲突,一般来说是类冲突,就是说你加入的静态库和原来项目有相同的类,

    解决办法,仔细看看编译错误的详细说明,到底是哪个类冲突。

    很多情况下是因为 你加入的两个外部框架(或者静态库)或者你自己的工程,同时都是使用了jsonkit这个框架,这就出现相同的类。这就是冲突。

    相同的类只能只能有一个,只能更改自己项目的冲突类。


    2.Undefined symbols for architecture i386:

    说明缺少某种框架,或者类。

    根据提示进行添加某些框架或者类。


    参考链接:

    http://blog.sina.com.cn/s/blog_8aecea5f0101cd63.html

    http://hi.baidu.com/konary/item/37f41746ef3a4c04e8350490 

问题十:

  • 原因:xcode 6取消了 Empty Application 模板,让一些喜欢使用代码写UI的程序猿无可奈何;
  • 解决方法: 1、删掉工程中main.storyboard 后要删除plist文件中对应的键值,否则会报如下错误: Could not find a storyboard named 'Main' in bundle NSBundle
  • IOS开发问题集合
    2、删除main.storyboard后,需要在AppDelegate.m中初始化一个window进行使用,否则应用程序没有window可用。
        
  • self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        // Override point for customization after application launch.

        

        self.window.backgroundColor = [UIColor whiteColor];

        [self.window makeKeyAndVisible];

    问题十一:

    • 原因:iOS 7 UITableView 在页面只有这一个视图时 会出现一半空白区域;headerview不能从0开始;
    • 解决方法: if (IS_iOS7) {

              self.automaticallyAdjustsScrollViewInsets = NO;

       

          }

    问题十二:

    • 原因:写[self performSelector:@selector(test) withObject:nil afterDelay:2.f];一定要记得remove要不会产生很多诡异问题;
    • 解决方法:[NSObject cancelPreviousPerformRequestsWithTarget:self];

    问题十三:

    • 原因:MJRefreshHeader 当前视图不显示时,不会走刷新是问题调用beginRefreshing方法
    • - (void)beginRefreshing

      {

          if (self.window) {

              self.state = MJRefreshHeaderStateRefreshing;

          } else {

              self.state = MJRefreshHeaderStateWillRefresh;

          }

      }

      - (void)drawRect:(CGRect)rect

      {

          if (self.state == MJRefreshHeaderStateWillRefresh) {

              self.state = MJRefreshHeaderStateRefreshing;

          }

       

      }由于当前视图不显示,所以不会调用drawRect方法,state一直是MJRefreshHeaderStateWillRefresh这个状态,默认不做任何处理,所以不会刷新;


    • 解决方法:当前VC不显示,收到PUSH需要刷新页面时,        
    • if (self.window) { //解决当前视图不window上(最上层时)MJRefreshHeader不刷新问题;

                  [self.tableView.header beginRefreshing];

              }else{

                  [self.tableView.header setState:MJRefreshHeaderStateRefreshing];

              }

     

    问题十四:

    • 原因:NSTimer 结束时 执行[[Timer invalidate]; 有可能会再执行一遍 timer里的轮询方法;

     

    • 解决方法:保险起见加个变量判断;

Android开发疑难杂症之include布局文件

前言有个需求是在不同的布局文件中引入相同的一个顶部toolbar的布局文件,因此用到include。 我的toolbar文件是这样的称之为layout_toolbar。 ***xml ...

android开发疑难杂症记录

零、前言如果让我投票选择android 开发中遇到的中最闹心的问题,我会毫不犹豫的投给网络了。 这个只能看科学上网的水平了。如果国内有相关的镜像,可以使用镜像。 一、R文件丢失原因:这个一般是因为...

Windows 8 Metro开发疑难杂症——APP的挂起状态 恢复

APP的挂起状态我在前面两篇关于导航的博客里面已经有提到,我这么说吧,目前版本(包括最新的RTM版)都是有一个bug的。下面我会给你演示这个bug。在这之前我先讲下这个挂起问题的临床表现吧。 不知道...

Android 开发 知识点 疑难杂症

1,对照片进行旋转 Bitmap bm0 = BitmapFactory.decodeByteArray(data, 0, data.length);       Matrix m = new Ma...
  • mark_xl
  • mark_xl
  • 2016年11月07日 16:17
  • 200

Android NDk开发系列(疑难杂症篇)

前言 在NDk开发中,开发者会遇到各种各样的问题,而博主也不是什么大神,只能说解决一个问题就往这篇博客上怼,我相信积少成多的道理,也相信随着博主的学习,这篇博文也会随着变长,同时也可以解决很多小白会遇...

WPF开发中的疑难杂症-控件设计篇-如何实现一个NumericBox

该文章是看过了博客园一篇文章后修改的控件,改成了WPF版本可用,并且支持输入负数 http://www.cnblogs.com/yingql/archive/2010/03/09/1681179.h...

myeclipse2016-ci破解疑难杂症问题整理

  • 2017年07月31日 18:12
  • 21.71MB
  • 下载

spring-sparkstreaming-kafka10集成实现和疑难杂症解决

一.前期准备 1.开发环境 window7 eclipse jdk1.8 2.linux环境 zookeeper-3.4.8 hadoop-2.6.4 spark-1.6.0 scala-2.10.6...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 开发疑难杂症
举报原因:
原因补充:

(最多只允许输入30个字)