iOS-开发常见问题汇总

1.OC中处理json解析出NSCFString

//注意:
     NSDictionary * homeworkDic;
if ([[dict valueForKeyPath:@"data.homework"] isKindOfClass:[NSDictionary class]]) {
     homeworkDic = [dict valueForKeyPath:@"data.homework"];
  }else
  {
     homeworkDic = [self dictionaryWithJsonString:[dict valueForKeyPath:@"data.homework"]];
  }

2.根据网络状态加载图片

  • 先从磁盘中获得原图 -> 原图已经被下载过->直接显示
  • 原图并未下载过-> WiFi直接下载原图
  • 原图并未下载过-> 3G\4G网络下时候要下载原图
  • 原图并未下载过-> 没有可用网络,此时从磁盘缓存中查找缩略图
  • 缩略图已经被下载过-> 直接显示
  • 没有下载过任何图片-> 显示占位图(placeholder)

3.ViewWithTag-查找子控件报错

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    // 求出标题按钮的索引
    NSUInteger index = scrollView.contentOffset.x / scrollView.width;
    // index == [0, 4]
    // 点击对应的标题按钮
    HKTitleButton *titleButton = self.titlesView.subviews[index];
    //HKTitleButton *titleButton = [self.titlesView viewWithTag:index];
    //此代码 索引为0时会报错(viewWithTag 递归查找,包括自己 先查找自己的tag,再查找子视图的tag,父视图默认tag为0,找到的是UIView而不是Button,所以setSelected方法找不到)
    [self titleButtonClick:titleButton];
}

4.iOS12下APP进入后台后再返回前台连接断开

1.在工程的AppDelegate文件中
@property (nonatomic, unsafe_unretained) UIBackgroundTaskIdentifier taskId;
2.在AppDelegate中的- (void)applicationDidEnterBackground:(UIApplication *)application 方法中
self.taskId =[application beginBackgroundTaskWithExpirationHandler]
用完的时候调用endTask
3.模拟一个长时间的任务
4.后台任务结束的时候要释放定时器

5.空数组的处理

if (![array isKindOfClass:[NSNull class]] && array.count > 0 && array != nil) {
}

数据源数组中包含空数组,怎么移除?

if ([self.dataArray containsObject:@[]]) {
     [self.dataArray removeObject:@[]];
}

6.在同一页面同时展示登录和注册View

在一个UIView设置它的Frame的宽度是屏幕的两倍,然后把登录的View和注册的View同时加载这个View上(注册View.x=这个View宽度的一半),点击切换按钮时改变这个UIView的leadingConstraint(View.x)就可以让这两个View显示。

7.升级Https证书报错

iOS11 HTTP load failed (error code: -999)

// 1.设置非校验证书模式
    _sessionManager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    _sessionManager.securityPolicy.allowInvalidCertificates = YES;
    [_sessionManager.securityPolicy setValidatesDomainName:NO];

8.某个页面禁止侧滑手势返回

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    // 禁用返回手势
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
}
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    // 开启返回手势
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
}

9.调用代码使APP进入后台,达到点击Home键的效果。(私有API)

[[UIApplication sharedApplication] performSelector:@selector(suspend)];

10.设置滑动的时候隐藏navigationBar

self.navigationController.hidesBarsOnSwipe = YES;

11.ld: library not found for -lXXXXX 的解决方法

ld: library not found for -lAFNetworking 这个错误是说编译时找不到AFNetworking这个链接库,但是我在项目代码中找到对引用的地方,没有其他异常。

  • 方法一:点击 XCode 工程文件,在 Build Phases 中查看 “ Link binary With Libraries”

如果不出所料,你应该能发现有一到数个的条目是用红色字体来显示的。
说明这些被工程引用的这些文件,其物理文件已经不处于之前所记录的地方了。
这种情况下,右键点击红色条目,选择 “Reveal in Project Navigator”,
此时大抵能在左侧栏中定位到缺失文件所在的路径,接下来就好办了,找到缺失的文件,挪回它应该待的地方。

  • 方法二:在工程的 Target 中选中要执行编译的某个target, 然后 “get info”,打开 Build 设置页面,在 “ Library Search Path” 中添加缺失链接库的所在文件夹的路径。

本来看到这两种方法时觉得第一种应该就能解决了,因为报错的信息看起来就像是原来的文件引用不到了而已,但是当我按照第一种方法去做时,发现“ Link binary With Libraries” 下没有红色的条目,而且本来就没有AFNetworking这个条目,所以第一种方法不适用。第二种方法也不对,因为我们的项目很多库是通过pod管理的,AFNetworking也是pod管理的库之一。这时候我就想起可能是pod的原因,在尝试了pod update无果后,发现了第三种解决类似问题的方法。

  • 方法三:BuildSettings -> Other Linker Flags -> 去掉对应第三方库的引用
  • 方法四:关闭Xcode,在控制台打开到工程目录,用pod install 命令重新安装,成功后再打开Xcode编译项目。

原文地址:https://www.cnblogs.com/StevenHuSir/p/10411504.html

时间: 2024-11-03 13:56:28

iOS-开发常见问题汇总的相关文章

【IOS】Mac和IOS开发资源汇总

本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏(在浏览器中按**command+D**). 今天收录了许多中文网站和博客.大家一定要去感受一下哦. 如果大家有知道不错的站点,可以告诉我.  目录 1.苹果官方文档 2.邮件列表 3.论坛 4.网站 5.博客 6.大会 7.播客和录像 正文 1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: Start Developing iOS Apps Today 构建Mac OS X程序:下面这篇文章介

Mac和iOS开发资源汇总

转自:http://www.tairan.com/archives/4647 本文主要汇集一些苹果开发的资源.会常常更新.建议大家把这篇文章单独收藏(在浏览器中按command+D). 文件夹 1.苹果官方文档 2.邮件列表 3.论坛 4.站点 5.博客 6.大会 7.播客和录像 正文 1.苹果官方文档 构建iOS程序:以下的这篇文章介绍了 iOS 程序开发的过程: Start Developing iOS Apps Today 构建Mac OS X程序:以下这篇文章介绍了Mac OS X开发的

Android开发常见问题汇总

[错误信息] [2011-01-19 16:39:10 - ApiDemos] WARNING: Application does not specify an API level requirement![2011-01-19 16:39:10 - ApiDemos] Device API version is 8 (Android 2.2)原因:不影响正常运行.在AndroidManifest.xml文件中没有加API的版本号,在<manifest> </manifest> 之

微信第三方平台开发 - 常见问题汇总

最近在做有关微信第三方相关内容,但是并没有想象中的那么顺利,出现种种的问题,记录在这里 1.微信的消息推送问题 矛盾点: 用户通过页面授权成功之后,通过返回的页面时候的授权码code就可以拉取到用户的相关信息,同时,后台会收到授权成功之后的消息推送,并且带有授权code,过期时间,预授权码等信息 猜想: 保证数据的完整性,两种途径都可以进行code的获取,进行获取商家的授权信息 原文地址:https://www.cnblogs.com/xingxia/p/wechat_errors.html

iOS开发/设计面试题汇总

无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,本文从编程.设计.App Store等各个方面对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总.一方面,能够帮助HR在短时间内获取更多反馈信息,更好地甄选合适人选,而iOS开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备. 常见问题 你昨天/这周学习了什么?  回答:· 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的i

100个iOS开发/设计程序员面试题汇总,你将如何作答?

100个iOS开发/设计程序员面试题汇总,你将如何作答? 雪姬 2015-01-25 19:10:49 工作职场 评论(0)   无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,本文作者Cameron Banga从编程.设计.App Store等各个方面对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总.一方面,能够帮助HR在短时间内获取更多反馈信息,更好地甄选合适人选,而iOS开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备. 常见问题 你昨天

iOS开发中常见问题集锦

在iOS开发中,会出现各种各样的问题.今天,就把这些常见的问题以及各位大牛的解决方案汇总下,方便以后查阅: 常见错误: 1. linker command failed with exit code 1 (use -v to see): http://www.reader8.cn/jiaocheng/20131022/2003334.html 2.开发问题 http://blog.sina.com.cn/s/blog_4cd8dd130102uzgp.html http://www.jiansh

iOS开发之手势识别汇总

iOS开发之手势识别汇总 iOS开发中手势识别有六种: 轻击手势(TapGestureRecognizer), 轻扫手势 (SwipeGestureRecognizer), 长按手势(LongPressGestureRecognizer), 拖动手势(PanGestureRecognizer), 捏合手势(PinchGestureRecognizer), 旋转手势(RotationGestureRecognizer), 1,轻击手势(TapGestureRecognizer) UITapGest

100个iOS开发/设计面试题汇总

常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS应用开发流程. 是否熟知CocoaPods?它是什么?如何运行的? 请概括一下你对软件授权的理解,及其对软件开发的影响. 请概括一下你在构建iOS应用时的测试过程.iOS应用如何实现对其他语言.日期格式以及货币单位的支持? 请描述一下Instruments及其作用. 关于iOS技术 请解释一下Han

iOS开发百度地图常见问题及解决办法

1.64bit模拟器不能正常工作 解决:请将Xcode5 的 Project -> Edit Active Target -> Build Settings -> Linking -> Other Linker Flags 中的"-ObjC"修改为"-all_load" 2.程序死在 _mapView = [[BMKMapView alloc] init]; 解决:很可能是由于没有在appDelegate里面初始化_mapManager 3.