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 region
的en
修改成China
即可
当然不止相机界面,比如textField和textview的全选、复制选项也会因此而更改。
参考:http://blog.csdn.net/lihao_ios/article/details/55097757
方案二
在 info.plist文件里面添加:Localized resources can be mixed
为YES
表示的意思是:是否允许应用程序获取框架库内语言。
参考: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];
}
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、打开Xcode
,command + 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
动画的属性fromValue
和toValue
填写的是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 属性往下调。
后续还会补充。。。