iOS开发-问题总结

20190729.jpg

前言:工作中可能会遇到各种各样的问题,有时解决完了再次遇到时,如果没有做笔记且相隔时间较长时,会容易忘记。故在此记录工作中遇到的一些比较不常见的问题,将持续更新...

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. 如下图:

AppInstallationFailed.jpeg

原因分析
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、UIButtonUIControlEventTouchDown点击延迟原因及解决
(1)button添加到UIScrollView
解决:设置UIScrollViewdelaysContentTouchescanCancelContentTouchesNo
(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;currentViewControllernil即可。

9、Xcode打开项目一直loading,显示Xcode-未响应,或者编译时显示Xcode-未响应,尝试了删除Xcode之后重新安装,依然存在该问题
原因分析
可能是保存Xcode时出错强制退出程序,致使之后每次打开Xcode都会加载这个错误工程导致Xcode未响应。
解决方法
退出Xcode,打开终端执行以下命令

cd ~/Library/Autosave\ Information/
rm -rf Unsaved\ Xcode*

运行结束重新打开工程即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容