240 发简信
IP属地:上海
  • 120
    HTTPS抓包教程

    设置Charles Charles4.5.6版本为例,进行如下设置: 设置Proxy Settings 按图示设置 SSL Proxying Settings 按图示设置 设...

  • Swift5.5 新特性

    Async/await 是个啥一言以蔽之, 以前需要用闭包回调来写的代码, 我们现在可以用async/await来写, 这让我们可以抛弃复杂的闭包嵌套代码, 极大的简化了代码...

  • 120
    iOS 暗黑模式适配

    激活暗黑模式 在view或者controller中 overrideUserInterfaceStyle = .dark print(traitCollection.user...

  • RawRepresentable

    使用RawRepresentabloe可以在自定义类型和相应的rawValue之间来回切换 比如我们使用一个结构体来管理埋点事件 然后根据提示补全代码 从这就更容易看出其原理...

  • 创建私有库常见git命令

    利用cocoapods一键创建私有库 创建之后关联远程仓库 查看远程分支 关联本地分支和远程分支git branch --set-upstream-to=<remote>/ ...

  • 120
    hash表原理

    一、NSDictionary使用原理 1.NSDictionary(字典)是使用hash表来实现key和value之间的映射和存储的,hash函数设计的好坏影响着数据的查找访...

  • 静态库和动态库

    embed的意思 是嵌入, 动态库用do not embed, 保证全局唯一, 静态库用embed, 可能会重复引用, 造成包体积大 两个静态库中如果有相同的静态库(比如系统...

  • 新电脑配置git环境

    大部分iOS项目都需要依赖pod管理第三方库, 第三方库又分为公有库和私有库,私有库所在的git服务器(比如gitlab)通过ssh公钥进行认证 ssh公钥配置 ssh-k...

  • 120
    Jenkins+cocoapods+Bugly自动打包配置教程

    最近公司在iOS开发小组的要求下,购置了一台Mac mini作为安卓组和苹果组自动打包机器。两组商量过后,决定使用Jenkins作为打包工具,毕竟Jenkins比较成熟。而苹...

  • iOS事件传递 -- 如何让view响应超出边界的事件

    iOS中事件响应会先依次调用个层级view的[UIView pointInSide] 方法, 如果返回true, 则会走改view的hittest方法, 所以如果我们想让v...

  • struct 和 class区别

    struct 是值类型, class 是引用类型 如果你持有一个实例, 想在多个地方对这个实例的属性的修改生效, 那么应该用class, 因为你在struct的实例中做修改之...

  • 120
    iOS 库.a 和 framework的区别和创建

    一直未间断SDK的工作,总是在做到现在从未总结,现在总结一下,备录一下,供大家参考和借鉴。 一、什么是库? 共享代码便是库,实现代码的复用,一般分为静态库和动态库。 二、静态...

  • 如何将一个分支上的改动移到另一个分支

    将要废弃的分支git reset 到某个节点(SHA-1值) 在这个时间点新建一个新的分支 Git add . Git stash save “xxx”, 将分支上的改动推...

  • 120
    iOS之图片裁剪遇到的问题(变形)

    如图我们想把这张图片拉大, 但保持圆角不变, 肯定不能直接把image放大, swift提供两个方法let imageV = UIImageView(frame: CGRe...

  • 为了适配iOS 13,
    原本可以直接将 NSData 类型 转换成 NSString 字符串,然后替换掉多余的符号
    hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
    hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
    这个方法失效,借鉴iOS 13适配总结 https://www.jianshu.com/p/8183d086b931

    需要将代码变成
    - (NSString *)SHA256
    {
    const char *s = [self cStringUsingEncoding:NSUTF8StringEncoding];

    NSData *keyData = [NSData dataWithBytes:s length:strlen(s)];

    uint8_t digest[CC_SHA256_DIGEST_LENGTH] = {0};
    CC_SHA256(keyData.bytes, (CC_LONG)keyData.length, digest);
    NSData *out = [NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];

    const unsigned *hashBytes = [out bytes];
    NSString *hash = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
    ntohl(hashBytes[0]), ntohl(hashBytes[1]), ntohl(hashBytes[2]),
    ntohl(hashBytes[3]), ntohl(hashBytes[4]), ntohl(hashBytes[5]),
    ntohl(hashBytes[6]), ntohl(hashBytes[7])];
    return hash;
    }

    亲测,可以适配iOS13并且兼容之前系统

  • JSON参数选择

    通常json 反序列化方法: options 有这些: mutableContainers:在 OC 中, 如果想用 mutableArray 或者 mutableDicti...

  • ios与 web 交互之参数传递(JSON)

    一般与 web 交互传递的参数是 string 类型 使用中javaScriptString由 callback 名拼接参数 arg: String通常做法 jsString...