$0 ios_ios14.0 - CSDN
精华内容
参与话题
  • Swift中$0、$1的实际含义

    千次阅读 2018-05-28 09:20:59
    swift 自动为闭包提供了参数缩写功能,可以直接通过 000 和1等来表示闭包中的第一个第二个参数,并且对应 的参数类型会根据函数类型来进行推断。如下代码: 不使用 000 1来代替闭包参数 let sortedArray = ...

    swift 自动为闭包提供了参数缩写功能,可以直接通过 01等来表示闭包中的第一个第二个参数,并且对应
    的参数类型会根据函数类型来进行推断。如下代码:

    不使用 $0、$1来代替闭包参数

    let sortedArray = [2,3,5,6,7]
    let tempSum = sortedArray.sorted { (a, b) -> Bool in
    return a > b
    }
    print(sortedArray) //[7, 6, 5, 3, 2]

    使用$0 ,$1

    let sortArray = sortedArray.sorted(by: {$0 < $1})
    print(sortArray) //[2, 3, 5, 6, 7]

    通过上面的代码可以发现使用$0、$1的话,参数类型可以自动判断,并且 in关键词可以省略,也就是
    只用写函数体就可以了。

    展开全文
  • 如果报错信息“This app is not allowed to query for scheme weixin” 那么需要在info.plist中添加两个地方 一、在URL type中添加ITem 0,然后再此节点下 urlschemes 下加入wechat 二、 ...

    如果报错信息“This app is not allowed to query for scheme weixin”

    那么需要在info.plist中添加两个地方

    一、在URL type中添加ITem 0,然后再此节点下 urlschemes 下加入wechat

    二、

    <key>LSApplicationQueriesSchemes</key>

    <array>

    <string>wechat</string>

    <string>weixin</string>

    <string>wx1a3c30d3c661e4c1</string>

    <string>sinaweibohd</string>

    <string>sinaweibo</string>

    <string>sinaweibosso</string>

    <string>weibosdk</string>

    <string>weibosdk2.5</string>

    <string>mai</string>

    </array>


    展开全文
  • 解决vue 在ios微信“复制链接”复制不到动态地址的问题 这个问题在安卓上市完全没有问题的,可是到了iPhone上就彻底失效了。因为ios微信对vue路由中的#号识别问题。 我的解决办法是在初始进入项目时重新拼接项目地址...

    解决vue 在ios微信“复制链接”复制不到动态地址的问题
    这个问题在安卓上是完全没有问题的,可是到了iPhone上就彻底失效了。因为ios微信对vue路由中的#号识别问题。

    我的解决办法是在初始进入项目时重新拼接项目地址,再重定向到拼接的地址去。

    先获取到#号前的路由地址,再手动添加我们的#号和当前项目地址后缀:

    在路由router.js里的beforeEach函数写

    截取地址

     // 重定向功能,为解决ios微信上复制链接功能不能复制到动态路由问题
      // 获取地址前段部分,不算参数
      var replaceUrl = window.location.href.split('#')[0] + '#' + to.path;
      var index = 0; // 索引初始化
      // 给replaceUrl拼接参数
      for (var i in to.query) {
        // 判断是否等于第一个参数
        if (index == 0) {
          // 拼接地址第一个参数,添加“?”号
          replaceUrl += '?' + i + '=' + to.query[i]
        } else {
          // 拼接地址非第一个参数,添加“&”号
          replaceUrl += '&' + i + '=' + to.query[i]
        }
        index++; // 索引++
      }
    

    重定向跳转

     window.location.replace(replaceUrl); // 重定向跳转
    

    全代码

    router.beforeEach((to, from, next) => {	  
     next();
      // 重定向功能,为解决ios微信上复制链接功能不能复制到动态路由问题
      // 获取地址前段部分,不算参数
      var replaceUrl = window.location.href.split('#')[0] + '#' + to.path;
      var index = 0; // 索引初始化
      // 给replaceUrl拼接参数
      for (var i in to.query) {
        // 判断是否等于第一个参数
        if (index == 0) {
          // 拼接地址第一个参数,添加“?”号
          replaceUrl += '?' + i + '=' + to.query[i]
        } else {
          // 拼接地址非第一个参数,添加“&”号
          replaceUrl += '&' + i + '=' + to.query[i]
        }
        index++; // 索引++
      }
      // console.log('test20190117:' + to.meta.title, replaceUrl);
      window.location.replace(replaceUrl); // 重定向跳转
      // 重定向功能------end
    });
    

    ~~

    大吉大利,问题解决

    ~~

    展开全文
  • iOS安全攻防(二十三):Objective-C代码混淆

    万次阅读 多人点赞 2014-06-07 17:00:52
    iOS安全攻防(二十三):Objective-C代码混淆class-dump可以很方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行留下笑柄。所以,我们迫切的希望混淆自己的代码...
    iOS安全攻防(二十三):Objective-C代码混淆


    class-dump可以很方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行留下笑柄。

    所以,我们迫切的希望混淆自己的代码。



    混淆的常规思路


    混淆分许多思路,比如:

    1)花代码花指令,即随意往程序中加入迷惑人的代码指令

    2)易读字符替换

    等等

    防止class-dump出可读信息的有效办法是易读字符替换。




    Objective-C的方法名混淆



    混淆的时机

    我们希望在开发时一直保留清晰可读的程序代码,方便自己。

    同时,希望编译出来的二进制包含乱七八糟的混淆后的程序代码,恶心他人。

    因此,我们可以在Build Phrase 中设定在编译之前进行方法名的字符串替换。



    混淆的方法

    方法名混淆其实就是字符串替换,有2个方法可以,一个是#define,一个是利用tops。
    利用#define的方法有一个好处,就是可以把混淆结果合并在一个.h中,在工程Prefix.pch的最前面#import这个.h。不导入也可以编译、导入则实现混淆。

    单段的selector,如func: ,可以通过#define func 来实现字符串替换。
    多段的selector,如a:b:c: ,可以通过分别#define a 、b、c 来实现字符串替换。




    我的混淆工具


    我写了个简易的混淆脚本,主要思路是把敏感方法名集中写在一个名叫func.list的文件中,逐一#define成随机字符,追加写入.h。

    脚本如下:

    #!/usr/bin/env bash
    
    TABLENAME=symbols
    SYMBOL_DB_FILE="symbols"
    STRING_SYMBOL_FILE="func.list"
    HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h"
    export LC_CTYPE=C
    
    #维护数据库方便日后作排重
    createTable()
    {
        echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
    }
    
    insertValue()
    {
        echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE
    }
    
    query()
    {
        echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
    }
    
    ramdomString()
    {
        openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16
    }
    
    rm -f $SYMBOL_DB_FILE
    rm -f $HEAD_FILE
    createTable
    
    touch $HEAD_FILE
    echo '#ifndef Demo_codeObfuscation_h
    #define Demo_codeObfuscation_h' >> $HEAD_FILE
    echo "//confuse string at `date`" >> $HEAD_FILE
    cat "$STRING_SYMBOL_FILE" | while read -ra line; do
        if [[ ! -z "$line" ]]; then
            ramdom=`ramdomString`
            echo $line $ramdom
            insertValue $line $ramdom
            echo "#define $line $ramdom" >> $HEAD_FILE
        fi
    done
    echo "#endif" >> $HEAD_FILE
    
    
    sqlite3 $SYMBOL_DB_FILE .dump
    


    操作步骤



    1.将混淆脚本confuse.sh放到工程目录下 
    mv confuse.sh your_proj_path/


    2.修改Prefix.pch
    打开Xcode,修改XXX-Prefix.ch ,添加混淆头文件:
    #ifdef __OBJC__
        #import <UIKit/UIKit.h>
        #import <Foundation/Foundation.h>
        //添加混淆作用的头文件(这个文件名是脚本confuse.sh中定义的)
        #import "codeObfuscation.h"
    #endif


    3.配置Build Phase
    在工程Build Phase中添加执行脚本操作,执行confuse.sh脚本,如图:







    4.创建函数名列表func.list,写入待混淆的函数名,如:
    -(void)sample;
    -(void)seg1:(NSString *)string seg2:(NSUInteger)num;


    就这样写:
    sample
    seg1
    seg2


    并将文件放置于与confuse.sh脚本同级
    mv func.list your_proj_path/




    5.编译查看结果
    直接build,混淆脚本会在编译前运行,进行字符随机替换,并且每次build的随机字符不同,如图:








    展开全文
  • iOS-提取URL参数为字典

    千次阅读 2019-01-30 00:43:53
    /** 获取url的所有参数 @param url 需要提取参数的url @return NSDictionary */ -(NSDictionary *) parameterWithURL:(NSURL *) url { NSMutableDictionary *parm = [[NSMutableDictionary alloc]init];...
  • ios实现点击复制文字到剪贴板

    万次阅读 2017-02-09 10:31:25
    移动端点击复制文字到剪贴板: ... 复制我到剪贴板 ... ...js代码: $("#button").click(function(){ if (navigator.userAgent.match(/(iPhone|iPod|iPad);.../i)) { //ios var copyDOM = document.query
  • iOS中Schema调起APP

    万次阅读 2015-08-27 19:07:15
    Schema调起App槽点:为了项目的推广,我们需要通过各种用户可以接受的任何方式,可以关联、跳转、启动我们App的方法,在微信、微博各种时机下,点击h5页面的短连接按钮就可以一键...iOS中 schema用来完成iOS中各个UI
  • 1.首先打开HealthKit ...2.导入HealthKit.framework,并且导入头文件 3.获取步数的写入和读取权限;...- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)...
  • 临时解决办法: 两个都加上支付路径: http://example.com/#!/ .../order ... ...对着官方文档这句:“发起支付的页面目录必须与设置的精确匹配。”看了半个小时,我突然想到是不是URL hash生成的“/#!/目录”被微信
  • iOS攻防 - (三)iOS应用的代码打包前混淆,不影响源代码 出于iOS应用的安全考虑,如:银行类型APP, 金融相关APP, 登录功能,支付功能等; 某些时候,我们需要对iOS应用的重要函数或名称进行混淆,因为即使是...
  • 在调用微信支付的时候遇到提示“URL未注册”,这通常是因为没有在微信支付后台正确配置授权目录的问题,但我所遇到的并非如此。 我们的应用中有3个页面用到微信支付: .../cart/index .../order/orderlist ...
  • 广点通 (iOS完整版)

    千次阅读 2015-12-29 21:51:16
    // // LGGuangDianTong.m // Test3 // // Created by lagou on 15/10/26. // Copyright © 2015年 lagou. All rights reserved. // #import "LGGuangDianTong.h" #import #import #import "GYDConnect.h" #imp
  • xmppframework

    千次阅读 2014-02-15 14:22:23
    XMPPRoster *xmppRoster;//用户对象  subscribe 订阅 获取好友列表 - (void)queryRoster { NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:roster"]; NSXMLElement *
  • -canOpenURL: failed for URL: "weixin://app/*************/" - error: "This app is not allowed to query for scheme weixin" iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用...
  • OpenGL ES简介:  OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会...
  • iOS代码混淆

    千次阅读 2018-11-13 15:18:32
    最近在做银行的项目,所以对安全性要求很高。这不安全检测没过����,这里面的问题就提到了代码混淆问题 ...这里需要注意的是$PROJECT_DIR/confuse.sh这个的路径和创建pch文件时的路径是一样的,$PROJECT_...
  • iOS6 中如何获得通讯录访问权限

    万次阅读 2013-03-24 00:39:06
    iOS 6中,以前工作正常的访问通讯录的iPhone程序可能会出错,现象是程序启动时不提醒用户是否允许程序访问通讯录,同时在“设置->隐私->通讯录”中看不到你的程序。另外,对通讯录进行操作的代码会报类似于以下...
  • 字数461 阅读1511 评论0 喜欢9 ...这在 Xcode 6.4 + iOS 8 时,是不会有的情况,原因是【为了强制增强数据访问安全, iOS9 默认会把所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为
  • 连接Xcode,运行程序到真机上,出现下列问题: 1>程序在启动图时,一直卡在这里,不往下走; 2>不连接Xcode的情况下,...[NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDo...
  • 官方说的比较详细,但是就是有些重复,而且有很多坑 ...**2016-02-02 10:43:48.978 MShow[778:259789] -canOpenURL: failed for URL: "weixin://app/wxd19e67a9eed31d47/" - error: "This app is not allowed to query
1 2 3 4 5 ... 20
收藏数 27,341
精华内容 10,936
关键字:

$0 ios