美文网首页
iOS 开发工作日记

iOS 开发工作日记

作者: 怪蜀黍罒成 | 来源:发表于2019-11-08 14:09 被阅读0次

    1. 数组count的问题

    比如 NSArray * array = @[] , 这时候 array.count-1 的值预想的应该为-1 , 实际会输出一个无穷大的树

    2.UIScrollview向下偏移20像素的问题

        if (@available(iOS 11.0, *)) {
            _myScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever ;
        } else {
            _myScrollView.MyViewController.automaticallyAdjustsScrollViewInsets = NO ;
        }
    

    3.cocoapods第三方服务集成问题

    1. 友盟和微信集成冲突问题
    • 可以选择集成友盟微信精简版,不会和微信冲突
      pod 'UMengUShare/Social/ReducedWeChat'
    • 可以把友盟里面冲突的SDK移除,libWeChatSDK.a ,然后再集成微信,思路就是两个只保留一个就好了
    1. 友盟和支付宝集成冲突问题出现UTDID冲突问题
    • 可以选择手动集成未使用UTDID版本的SDK,地址 https://docs.open.alipay.com/54/104509
    • 因为支付宝是在SDK内部集成的UTDID库,所以两个冲突的情况下只保留一个的这种解决方式就不可行

    4.cornerstone提交代码的时候选择了ignor

    • 选择了ignor,软件就会忽略文件的一切增删查改,这时候我们需要提交这些改变只需要让软件不在忽略他们即可,如图所示可以查看被忽略的文件


      屏幕快照 2019-08-28 14.36.23.png

    5.iOS开发判断设备是否有安装支付宝

    • 支付宝SDK没有提供是否安装支付宝的方法,这时候我们需要判断是否安装支付宝APP,可以通过系统canOpenURL是否可以打开某个APP的方法来间接判断是否可以打开支付宝

         NSURL * alipayUrl = [NSURL URLWithString:@"alipay:"];
         if ([[UIApplication sharedApplication] canOpenURL:alipayUrl] == NO) {
             [ProgressHUD showToast:@"请安装支付宝"];
             return nil ;
          }
      

    6.UIScrollView和系统优化返回上一级的手势冲突

    • UIScrollView的滑动手势为UIPanGestureRecognizer,而系统的右滑返回功能也是通过UIPanGestureRecognizer手势来实现的,因为UIScrollView的手势接收顺序比系统的更先,UIScrollView接收到手势事件以后并没有把事件接着传递下去 ,导致系统的手势失效
    • 解决思路为:让UIScrollView把手势继续传递下去即可
    • 参考链接 https://www.jianshu.com/p/3493e5775f42

    7.关于原生WKWebview和h5混合开发的交互理解3种方式

    • 通过WKNavigationDelegate代理判断h5链接来实现对应的跳转(不是很合理的方式)

       -(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction      
         *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
       }
      
    • 原生OC和JS交互 https://www.jianshu.com/p/4fa8c4eb1316

    #pragma mark - WKScriptMessageHandler
    - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
        
        if ([message.name isEqualToString:@"PaJiaJSToAPPMessage"]) {
            // 1.全局操作
            // 2.个模块自己自定的操作
            if (self.jsToAppMessageBlock) self.jsToAppMessageBlock(message.body);
        }
    
    }
    
    #pragma mark - app发数据给JS
    -(void)appToJsMessageParams:(NSDictionary *)params{
        
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];
        NSString * jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
        NSString * functionParamsString = [NSString stringWithFormat:@"PaJiaAPPToJSFunction(%@)",jsonString];
        [self.webView evaluateJavaScript:functionParamsString completionHandler:nil];
    }
    #pragma mark - lazy 
    - (WKWebView *)webView{
        if (_webView == nil) {
            
            WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
            /**
             设置代理对象
             ScriptMessageHandler:WKScriptMessageHandler的代理对象
             name:跟后端协调好的响应名称
             **/
            
            [config.userContentController addScriptMessageHandler:self name:@"PaJiaJSToAPPMessage"];
            
            _webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];
            _webView.contentScaleFactor = YES ;
            _webView.navigationDelegate = self ;
            _webView.UIDelegate = self ;
            
            // 解决webview在iPhone x 系列机型上Indicatopr 为黑边的问题
            if (@available(iOS 11.0, *)) {
                self.webView.scrollView.contentInsetAdjustmentBehavior = UIApplicationBackgroundFetchIntervalNever ;
            } else {
                
            }
         }
        return _webView ;
    }
    
    • 通过第三方桥接 WebViewJavascriptBridge 需要h5和OC都用这个桥接方式才行

    8.如果判断a/b是否为整除

    float a , float b ,   
    if(a/b == (int)a/(int)b){
          //整除
    }
    

    9.在做数字货币支付的时候,数字货币的现实问题

    会出现数字货币加减以后数据不对的问题,应该是float、double的精确度不够,换成NSDecimalNumber处理数据

    相关文章

      网友评论

          本文标题:iOS 开发工作日记

          本文链接:https://www.haomeiwen.com/subject/anczsctx.html