前言:工作中可能会遇到各种各样的问题,有时解决完了再次遇到时,如果没有做笔记且相隔时间较长时,会容易忘记。故在此记录工作中遇到的一些比较不常见的问题,将持续更新...
1、Xcode运行报错: App installation failed This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.
如下图:
原因分析
application-identifier
冲突。(我出现该问题情况是由于APP转让之后使用新开发者账号真机测试,真机上还装有原账号安装的包)
解决方法
将手机上的相应软件删除卸载就OK了。
2、Xcode打包上传iTunes完成后报警告:
WARNING ITMS-90076: "Potential Loss of Keychain Access. The previous version of software has an application-identifier value of ['BAGPUY4P4E.com.zxww.folk'] and the new version of software being submitted has an application-identifier of ['SH2X52JLPW.com.zxww.folk']. This will result in a loss of keychain access."
原因分析
该APP是从一个开发者账号转让到新的开发者账号,使用新开发者账号上传时报的警告。该警告意思是会影响到keychain里存的信息。
解决方法
如果keychain里边的信息无所谓的话,该警告可以无视,不影响上传及审核,下次上传不会再提示。
如果keychain里边的信息有用的话,解决办法是:百度一下。
3、UIButton
的UIControlEventTouchDown
点击延迟原因及解决
(1)button添加到UIScrollView
上
解决:设置UIScrollView
的delaysContentTouches
和canCancelContentTouches
为No
(2)与导航栏右滑返回手势冲突
解决:设置
self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan = NO;
(3)项目中含有UIButton
的分类中实现了防止重复点击的相关内容
解决:在需要用到UIControlEventTouchDown
的类中重写防止重复点击的相关方法,去除防止重复点击相关代码
(4)与window手势冲突
解决:在button所在UIViewController
中重写viewDidAppear
如下
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
for (UIGestureRecognizer * gesture in self.view.window.gestureRecognizers) {
gesture.delaysTouchesBegan = NO;
}
}
4、UIView
的- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
不响应
原因分析
该UIView
的父视图添加的有UITapGestureRecognizer
手势
解决方法
父视图中的UITapGestureRecognizer
手势设置代理并实现如下代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[CustomView class]]) {
return NO;
}
return YES;
}
CustomView
为自定制的需要获取- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
事件的view。
5、升级cocoapods报错如下:
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://gems.ruby-china.org/ - bad response Not Found 404 (https://gems.ruby-china.org/specs.4.8.gz)
原因分析
.org
域名无法提供RubyGems
服务,即.org
域名无效,需替换成.com
域名。
解决方法
(1)查看当前源
$ gem source -l
*** CURRENT SOURCES ***
https://gems.ruby-china.org/
(2)删除当前源
$ gem sources --remove https://gems.ruby-china.org/
https://gems.ruby-china.org/ removed from sources
(3)添加源
$ gem sources --add https://gems.ruby-china.com/
https://gems.ruby-china.com/ added to sources
接下来使用sudo gem install cocoapods
继续升级cocoapods即可
6、使用sudo gem install cocoapods
升级cocoapods报错如下:
$ sudo gem install cocoapods
Password:
Fetching: httpclient-2.8.3.gem (100%)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
原因分析
没有用户权限所致
解决方法
使用sudo gem install -n /usr/local/bin cocoapods
升级即可。
7、如何检测项目中的广告标识符(IDFA)
1)打开终端cd到需要检测的项目路径下
2)输入$ grep -r advertisingIdentifier .
3)结果中会显示项目中哪个库使用了广告标识符(DIFA)
eg:
Binary file ./Pods/mob_sharesdk/SDK/ShareSDK/Support/PlatformSDK/SinaWeiboSDK/libWeiboSDK.a matches
Binary file ./Pods/BMKLocationKit/framework/BMKLocationKit.framework/BMKLocationKit matches
如果没有检测到则什么都不会输出。
8、友盟分享报错“2003”
原因分析
对于该报错原因,友盟只给出了新浪微博如果报该错误是可能因为频繁操作所致。那么分享到其他平台的时候也报了该错误,查看友盟错误码UMSocialPlatformErrorType
只给出了解释是分享失败,但并没有解释什么原因导致的。
首先保证所有配置没有问题,在调用分享操作- (void)shareToPlatform:(UMSocialPlatformType)platformType messageObject:(UMSocialMessageObject *)messageObject currentViewController:(id)currentViewController completion:(UMSocialRequestCompletionHandler)completion;
时查看currentViewController
是否是self
,如果当前步骤代码是在UIViewController
里边调用的,那么不会有问题;但是我们经常会把分享的操作进行封装以便于复用,所以如果是封装在NSObject
类中,那么这里写self
就会报错“2003”。
解决方法
在调用分享操作- (void)shareToPlatform:(UMSocialPlatformType)platformType messageObject:(UMSocialMessageObject *)messageObject currentViewController:(id)currentViewController completion:(UMSocialRequestCompletionHandler)completion;
时currentViewController
传nil
即可。
9、Xcode打开项目一直loading,显示Xcode-未响应,或者编译时显示Xcode-未响应,尝试了删除Xcode之后重新安装,依然存在该问题
原因分析
可能是保存Xcode时出错强制退出程序,致使之后每次打开Xcode都会加载这个错误工程导致Xcode未响应。
解决方法
退出Xcode,打开终端执行以下命令
cd ~/Library/Autosave\ Information/
rm -rf Unsaved\ Xcode*
运行结束重新打开工程即可