项目开发中遇到的问题汇总~持续更新

项目开发快进入尾声了,之前一直较忙,也由于没有遇到什么可以记载的问题,故此一直未整理,近期渐渐闲下来,会逐渐将这个项目在开发中遇到的问题汇总出来:

1. 集成蓝牙(佳博打印机)要在info里面进行如下配置

2.  程序在Xcode7.2上运行一切OK,在7.3上一跑就会报 Cannot create __weak reference in file using manual reference counting 错误,是因为升级到7.3以后,非ARC下使用__weak就会报错,在非ARC模式下必须删除所有的__weak

解决办法:

项目开发中遇到的问题汇总~持续更新_第1张图片

三:支付宝支付功能公钥处理

1. 按照流程生成公钥私钥后在后台填好资料,(重要步骤)在账户信息中要把公钥同步

项目开发中遇到的问题汇总~持续更新_第2张图片 项目开发中遇到的问题汇总~持续更新_第3张图片


四:SDWebImage访问HTTPS站点获取图片资源失败解决办法

在使用SDWebImage第三方库是,访问http站点的图片不成问题,但当访问https站点时,会遇到一个提示:

error:  NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

遇到这个提示时,首先说说怎么解决这个问题。

在SDWebImageDownloaderOperation.m文件中增加以下方法:

在NSURLConnection 代理方法中处理信任问题:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    if ([challenge previousFailureCount]== 0) {
        
        //NSURLCredential 这个类是表示身份验证凭据不可变对象。凭证的实际类型声明的类的构造函数来确定。
        NSURLCredential* cre = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
        [challenge.sender useCredential:cre forAuthenticationChallenge:challenge];
    }
    else{
        
    }
}

这是NSURLConnection delegate的一个方法。

HTTPS 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的保护。HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,如果服务器搭建自己的https 也就是说采用自认证的方式来建立https信道,这样一般在客户端是不被信任的,所以我们一般在浏览器访问一些https站点的时候会有一个提示,问你是否继续。

五:最近在新增活动时遇到一个bug,活动页面的布局因为没用导航栏,每次从有导航栏的页面进入时,视图就会莫名的上移20px项目开发中遇到的问题汇总~持续更新_第4张图片

查找原因使用一下方法,在viewWillAppear也就是视图每次显示时打印所有的子视图的位置

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    
    [self.view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        obj.backgroundColor = kRandomColor;
        NSLog(@"%@- %zi-idx  %@-view",obj,idx,NSStringFromClass([obj class]));
    }];

}

发现每次从有导航栏的页面进入时,视图最基本的view的frame发生了变化,高度变了

解决方法: 在viewDidLayoutSubviews里面重置frame即可

- (void)viewDidLayoutSubviews{
    self.view.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
}

6. (LXS)微信支付过程中服务器只返回一个订单号,需要客户端去微信下单,下单后返回的是XML数据的字符串,解析式可以先将XML字符串转换成NSXMLParser,再用XMLDictionary三方库解析

NSDictionary* dict = [NSDictionarydictionaryWithXMLParser:parser];








0467223
011315c0430323345d19244]]>

7.让UITableView的section header view不悬停的方法

当 UITableView 的 style 属性设置为 Plain 时,这个tableview的section header在滚动时会默认悬停在界面顶端。取消这一特性的方法有两种:

  1. 将 style 设置为 Grouped 。这时所有的section header都会随着scrollview滚动了。不过 grouped 和 plain 的样式有轻微区别,切换样式后需要重新调整UI,使用grouped时,会有段尾的高度,如果不想要,可以使用代理设置段尾的高度,但是不能设为0,
    -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
    return 0.01f;
    }
  2. 重载scrollview的delegate方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat sectionHeaderHeight = 40;
    if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
        scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
    } else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
        scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
    }
}
8. 点击UITableViewCell中的按钮不起作用

项目开发中遇到的问题汇总~持续更新_第5张图片

在订单管理界面中UITableViewCell是由UIView改过来的,xib还是UIView创建的,没有contentView,但是UITableViewCell创建的xib应该是有一个contentView的,直接修改时xib中还是没有contentView,在创建出来以后,系统会默认将contentView加上,经过多次测试,发现系统添加的contentView会覆盖在视图最上层,导致UITableViewCell上所有控件的点击事件均失效,在代码中加入    [self insertSubview:self.contentView atIndex:0];可解决,或重写xib亦可。

9. cocoaPods重装失败,报错RPC failed; curl 56 SSLRead()  return error -36问题,因为本人电脑上有三个版本的Xcode,导致路径不明,更新出现问题,可以使用一下命令行指定路径进行更新,

sudo xcode-select -switch /Applications/Xcode 8.2.1.app/Contents/Developer
也可以删除过多的Xcode,只保留一个,名字改为Xcode再更新即可

10. could not insert new outlet connection

xib/storyboard连接属性时偶尔会报这个错误,可以尝试在要连接属性的地方加入一个换行试试

项目开发中遇到的问题汇总~持续更新_第6张图片项目开发中遇到的问题汇总~持续更新_第7张图片

11.使用git管理代码时,会出现部分路径拷贝的情况,导致同一个工程有多个路径

项目开发中遇到的问题汇总~持续更新_第8张图片

解决办法,删除除Podfile之外的pod相关文件,重新pod install一次即可

12.在用Swift开发项目时,引入了三方库R.swift,在pod install后偶尔会报以下错误


提示找不到R.swift/rswift文件,加上即可,R.swift所在目录下的正确文件截图如下

项目开发中遇到的问题汇总~持续更新_第9张图片

13. UIButton实现title有两行文字

如果两行文字大小相同,颜色相同,可以直接设置Line Break为Word Wrap,然后在Title中按option+enter就可以增加行数。

要想两行文字大小不同,颜色不同,那加一个UILabel作为UIButton的subview了应该是最方便的实现方式了。

14.IB_DESIGNABLE 和 IBInspectable 的两个比较厉害的属性;

  • IB_DESIGNABLE 让你的自定 UIView 可以在 IB 中预览。
  • IBInspectable 让你的自定义 UIView 的属性出现在 IB 中 Attributes inspector 。
具体可查看: http://www.jianshu.com/p/64931d040692

15. exc_bad_access(code=1,address=0x0)问题

原因:访问了已经释放的对象导致

出处:声明参数时一时疏忽,把数据NSArray的用assign引用了,改为strong即可


16. message sent to deallocated instance 0x10b46e7d0

在WLYX开发的过程中,有个加入购物车的动画,有次出现报错message sent to deallocated instance 0x10b46e7d0,随后会闪退,意思是说调用了已释放对象不存在的方法,细查之下发现是因为A,B两个页面同时实现了动画协议,但是在从A页面跳转到B页面时,B页面也遵守了协议,但是在页面销毁的时候没有取消,解决办法:需要遵守协议的地方尽量写在页面出现的地方(viewDidAppear),在页面消失的时候进行销毁(viewWillDisappear)。





你可能感兴趣的:(项目开发中遇到的问题汇总~持续更新)