iOS开发遇到的一些问题及解决方法

1

如图:

解决方案:
只需要在引用处导入 #import <UIKit/UIKit.h> 即可

2

如图:

原因1. 是提示的png并不是ps导出的png,而是手动修改jpeg后缀名为png,在模拟器上不会报错,但在真机,不 识别这种所谓 的“png”图片。(随便批下美工)
原因2:这是因为png图片的问题,png图片在存储的时候有一个NOT INTERLACED/INTERLACED(无交错/交错)的选项,因为设计师在切图的时候的存储错误,图片在XCode中就会报这个错误,但是还是会编译成功并运行,请设计师将图片重新按无交错存储就行了。

解决方案:
用ps重新导出png就ok了

3

如图:

解决方案:
1)从模拟器中删掉该应用
2)重启模拟器
3)重启Xcode
4)clean the project (command+shift+k)
5)run it again.

4、Bitcode

在打包的时候遇到如图所示的错误:

表示Bitcode编译报错
解决方案:

把图中的YES改成NO,关闭Bitcode

5

如图:

出现类似:iOS Undefined symbols for architecture armv7 std::basic_string<char, std::char_traits<char>的报错的是缺少了libstdc++.dylib系统库

6

如图:

出现如图报错是缺少了MobileCoreServices.framework系统库

7

如图:

出现如图报错是缺少了SystemConfiguration.framework系统库

8

如图:

出现如图报错是缺少了libxml2.2.tbd系统库

9、MRC和ARC混编引发的错误

如图:

iOS5.0以后就开始可以使用ARC( Automatic Reference Counting:自动引用计数 )来代替之前的MRC(Manual Reference Counting:人工引用计数)。使用ARC会减少很多代码和忘了释放对象的苦恼。但是事情都有两面性。使用了ARC之后如果你想复用以前写过的使用MRC的类, 就会出报错。这时候怎么办?方法比较简单, 只需要做下面的一个步骤就可以解决:

在targets的build phases选项下Compile Sources下选择要不使用arc编译的文件,双击它,输入 -fno-objc-arc 即可
如图:

MRC工程中也可以使用ARC的类。方法如下:

在targets的build phases选项下Compile Sources下选择要使用arc编译的文件,双击它,输入 -fobjc-arc 即可

10、App installation failed

真机测试的过程中,出现这种Bug
如图:

解决方案:
手机里面已经有了这个项目,删除手机里面的这款APP,重新运行即可。

11、App installation failed

原因:

修改了Build Settings→Packagin→Produce Name.修改这个主要是为了修改APP在主屏幕上的名称,因为大多数人在建立工程的时候,都是使用英文名,但app的名字一般都是中文的,所以很多人会修改这个属性。

解决方案:

不要修改这个属性,修改app在主屏幕上的名字有一个其他的方法。打开工程的infor.plist文件,新增一行(Bundle display name),将value设置为你app的名字。

ok,万事大吉。以后再也不会弹出这个可恶的对话框了。

12、failed to get the task for process XXX

原因:
证书问题,project和targets的证书都必须是开发证书,ADHOC的证书会出现此问题。

解决方案:
project和targets的证书使用开发证书。

13、SIGCONT调试错误

在调试状态程序暂停,并显示SIGCONT,但运行时无问题。
如下图:

解决方案:
如果使用的是lldb 在命令行窗口输入:process handle --pass true --stop false --notify true SIGCONT

然后点击下一步:

14、applicationWillTerminate不调用问题

iOS4.0以后系统支持多任务类型,程序按下home键后,程序进入后台运行,如果内存不足被系统关闭或者手动关闭,都不会调用applicationWillTerminate回调函数。

解决方法:可以在程序进入后台时,添加一后台运行通知函数,也就是程序进入后台一段时间内,程序还在运行,并可以响应一些消息。代码如下:

- (void)applicationDidEnterBackground:(UIApplication *)application

{
   [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(){
         
       //程序在10分钟内未被系统关闭或者强制关闭,则程序会调用此代码块,可以在这里做一些保存或者清理工作
       NSLog(
          @"程序关闭"
          );
     }];
}

15、undefined symbols for architecture x86_64错误

如下图:


原因:
少框架、少静态库了。图中显示少CoreMotion.framework库

解决方案:


添加对应的库即可

如果报的错误不是来自于第三方库,那么用上面的解决方法是解决不了,
那么我们的解决方案是:


16、iOS命名报错

iOS命名以new开头

局部变量名是可以的,属性不可以。比如定义一个属性叫做 newArray,则会报错。

原因应该是这样:每个对象都有new方法,如 Person *person = [Person new];
这里的new就相当于alloc init,如果以new开头,系统会自动生成getter和sertter方法,getter方法是以new开头的,可能会与new方法冲突。

17、xib连线报错

如下图:报NSUnknownKeyException错误

原因:
1、xib控件连线错误
2、Custom Class 设置错误


解决方案:
1、检查xib中的控件连线
2、检查Custom Class的设置

这里需要注意:

  • 如果xib对应的是控制器应该在如下位置设置Custom Class


  • 如果xib对应的是cell或view应该在如下位置设置Custom Class


18、PrefixHeader.pch使用报错

在PrefixHeader.pch中导入头文件后,还是提示找不到头文件

原因:
PrefixHeader.pch 引入的头文件信息先后顺序很重要,先后顺序错误引起的找不到头文件问题.

如:
我在HomeViewController.h中有用到CLLocationManager的类,如果在PrefixHeader.pch中这样写,就可以。

#import <CoreLocation/CoreLocation.h>

#import <MapKit/MapKit.h>

#import "Common.h"

#import "LoginViewController.h"

#import "HomeViewController.h"

如果这样:

#import "Common.h"

#import "LoginViewController.h"

#import "HomeViewController.h"

#import <CoreLocation/CoreLocation.h>

#import <MapKit/MapKit.h>

把关于定位的头文件放到HomeViewController.h之后,就会报错:
unknown type name 'CLLocationManager'

19、 IOS开发之相机、相册页面英文问题

现象:
在调用系统的相机和图库界面时,默认的一般都是英文的提示,比如“cancel”、“select”,

解决方案:

方案一
只要将plist中的:Localization native development regionen修改成China即可
当然不止相机界面,比如textField和textview的全选、复制选项也会因此而更改。
参考:http://blog.csdn.net/lihao_ios/article/details/55097757

方案二
在 info.plist文件里面添加:Localized resources can be mixedYES
表示的意思是:是否允许应用程序获取框架库内语言。
参考:http://www.jianshu.com/p/06cd02fb148d

20、升级Xcode9出现如下问题

解决方案:

找到对应的xib文件位置



点击右侧展开属性栏 找到interface Builder Document把Builds For换成7.0以后



21、Treating Unicode character as whitespace警告

现象:


原因:复制网上的带格式的代码导致的

解决方案:手动编写该代码即可

参考:https://jingyan.baidu.com/article/c45ad29c271e26051753e214.html

22、真机运行报如下错误

解决方案:在XXXTests中设置Team

23、libc++abi.dylib`__cxa_throw: 崩溃

原因:xcode中设置了当所有异常出现时的断点。

解决方法:解决办法是将all改为Objective-C

参考:http://blog.csdn.net/yancechen2013/article/details/52622447

24、使用xib无法连接组件

解决方法:

1、删除 ~/Library/Developer/Xcode/DerivedData/ 下的所有文件(清理Xcode缓存数据)
2、重启Xcode

参考:https://stackoverflow.com/questions/7176364/could-not-insert-new-action-connection-error

25、ibtool failed with exit code 255

Command /Applications/Xcode.app/Contents/Developer/usr/bin/ibtool failed with exit code 255. The tool may have crashed. Please file a bug report at http://bugreport.apple.com with the above output and attach any crash logs for ibtool, ibtoold, Xcode, and

原因:在删除 ~/Library/Developer/Xcode/DerivedData/ 下的所有文件(清理Xcode缓存数据)后有可能会出现该报错

解决方法:

1、clean你的工程
2、关闭XIB文件
3、关闭你的工程
4、退出Xcode
5、重新打开你的工程
6、再试一次

参考:http://blog.csdn.net/u012891546/article/details/39639269

26、xcode中运行IOS Simulator的时候运行缓慢

原因:模拟器上面不小心按到了command + T,然后打开了这个:


解决方法:关闭勾选即可

27、使用AVPlayer遇到的崩溃问题

Terminating app reason: 'An instance of AVPlayer cannot remove a time observer that was added by a different instance of AVPlayer.'

解决方法:调用removeTimeObserver方法时添加_audioPlayer.rate == 1.0判断

if (_audioPlayer) {
         if (_playTimeObserver) {
                if (_audioPlayer.rate == 1.0) {
                      [_audioPlayer removeTimeObserver:_playTimeObserver];
                }
         }
         [_audioPlayer replaceCurrentItemWithPlayerItem:item];
}

参考:https://stackoverflow.com/questions/26668230/terminating-app-reason-an-instance-of-avplayer-cannot-remove-a-time-observer-t

28、xcode报错:invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific

xcode不论什么原因都统一报错:

invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.

即使是数组越界也看如下这样的报错信息:

context=*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray

原因:集成友盟统计时默认关闭了日志打印,我们需要将日志打印打开

解决方法:

[MobClick setLogEnabled:YES];

然后就可以正常看到崩溃日志了

参考:https://www.jianshu.com/p/16eb231ce0c7

29、Xcode-模拟器出现Pseudo Terminal Setup Error错误

解决方法:可打开终端,输入如下命令

sudo sysctl -w kern.tty.ptmx_max=999

参考:https://www.jianshu.com/p/d3596a5e1709

30、启动页设置失效

启动页使用LaunchImage的方式的时候,配置好后要删除APP后重新运行。

31、xcode清空钥匙串后ios证书状态显示Not in Keychain

问题:误删了相关钥匙串里的证书,结果 Xcode -> 设置-> 账户->管理证书 里显示 Not in Keychain

点击左下角+号建立新的

解决方法:新建个 iOS/mac 工程,就可以自动修复。


需要注意的是,新建工程时选上个人组(默认为 None)


参考:https://segmentfault.com/q/1010000012291616

32、真机测试或打包报错:Command /usr/bin/codesign failed with exit code 1

原因:出现这种错误可能是证书匹配失败、证书没有、或者是密钥/证书重复了。

解决方法:
1、打开Xcode, 将Account中账号删除。
2、退出Xcode, 前往~/Library/Developer/Xcode/DerivedData~/Library/MobileDevice/Provisioning Profiles目录,将目录下的东西全部删除。
3、打开钥匙串访问工具,选择登录 - 我的证书,将你要使用的Developer证书和Distribution证书全部删除,然后选择登录 - 密钥,将你要使用的证书相关的专用密钥和公用密钥全部删除,关闭钥匙串工具。(这些密钥如果有重复的,很有可能这就是真机调试证书报错问题所在)
4、关机重启电脑
5、打开Xcodecommand + k清理一下, 添加开发者账号,证书重新安装一遍。联机测试一般就好使了

注:以上是盲目的删除了全部有可能出现匹配问题的缓存数据,可根据实际情况选择执行其中的几步。

参考:https://blog.csdn.net/qq_23892379/article/details/81117991

33、Tableview 禁止下拉,允许上拉

方法一(该方法会有点抖动,不建议使用!)

  -(void)scrollViewDidScroll:(UIScrollView *)scrollView
 {
  NSLog(@"%f",tableV.contentOffset.y);
  if (tableV.contentOffset.y <= 0) {
      tableV.bounces = NO;
      NSLog(@"禁止下拉");
  }
else
  if (tableV.contentOffset.y >= 0){
      tableV.bounces = YES;
      NSLog(@"允许上拉");
  }
}

方法二

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  CGPoint offset = tableV.contentOffset;
  if (offset.y <= 0) {
      offset.y = 0;
  }
  tableV.contentOffset = offset;
  }

参考:https://www.jianshu.com/p/9134da8ee34d

34、Xcode频繁意外退出的解决方案

解决方法:
1、右键主项目文件即xcodeproj文件或xcworkspace文件,显示包内容。

2、删除xcuserdata文件夹,解决。

xcuserdata文件夹里保存着当前项目的一些临时信息,很多崩溃其实是加载失败导致的,删除这个文件夹,Xcode会重新布局加载信息。如此崩溃就解决了。

参考:https://www.jianshu.com/p/f55f3a4db2f0

35、The application's Info.plist does not contain CFBundleShortVersionString

解决方法:

info.plist里,给Bundle versions string, short添加CFBundleShortVersion即可

参考:https://blog.csdn.net/centor/article/details/104733676

36、[NSConcreteValue doubleValue]: unrecognized selector sent to instance

现象:在UIScrollView中添加CASpringAnimation动画,动画执行过程中滑动UIScrollView,程序崩溃。

原因:CASpringAnimation动画的属性fromValuetoValue填写的是NSValue值,代码如下:

spring.fromValue = [NSValue valueWithCGPoint:CGPointMake(image.layer.position.x, image.layer.position.y)];

解决方法:把NSValue值改成double

spring.fromValue = @(image.layer.position.x);

参考:https://www.jianshu.com/p/d1b0ec34c85e

37、Xcode中模拟器消失了

现象:Xcode中编译时的模拟器选项突然消失了(已安装了模拟器),如图

解决方法:Deployment Target 属性往下调。

image.png

后续还会补充。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容