狸叔资产

APP介绍

银行卡,信用卡,花呗,股票,基金,你是不是也遇到自己的资产因存放地方太多,有时会忘记自己还剩余多少钱呢?

你是不是也像我一样想管理好自己的资产,但是每天记账又会觉得太繁琐呢?

你是否也担心自己的资产数据存放到别人的服务器上而感到不安全呢?

狸叔资产的诞生就是基于上述场景,我想要的是一款单纯的资产统计APP,只需要每个月花点时间做一次资产统计梳理,就可以做到对自己的资产情况有个清楚的认知。

Read more   2020/11/9 posted in  关于我

SVProgressHUD在Xcode11以后的项目中无法运行

错误提示

运行SVProgressHUD.show()后直接崩溃,报下面的错误

2020-10-23 11:12:48.021999+0800 wealth[9884:155319] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[wealth.AppDelegate window]: unrecognized selector sent to instance 0x6000007b8190'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff2043a126 __exceptionPreprocess + 242
    1   libobjc.A.dylib                     0x00007fff20177f78 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff20448c6f +[NSObject(NSObject) instanceMethodSignatureForSelector:] + 0
    3   UIKitCore                           0x00007fff24695af8 -[UIResponder doesNotRecognizeSelector:] + 292
    4   CoreFoundation                      0x00007fff2043e3f0 ___forwarding___ + 859
    5   CoreFoundation                      0x00007fff20440698 _CF_forwarding_prep_0 + 120
    6   SVProgressHUD                       0x0000000100e51325 __27+[SVProgressHUD sharedView]_block_invoke + 117
    7   libdispatch.dylib                   0x00000001018b5a88 _dispatch_client_callout + 8
    8   libdispatch.dylib                   0x00000001018b6ff3 _dispatch_once_callout + 66
    9   SVProgressHUD                       0x0000000100e51288 +[SVProgressHUD sharedView] + 136
    10  SVProgressHUD                       0x0000000100e5267d +[SVProgressHUD showProgress:status:] + 61
    11  SVProgressHUD                       0x0000000100e52454 +[SVProgressHUD showWithStatus:] + 68
    12  SVProgressHUD                       0x0000000100e52365 +[SVProgressHUD show] + 37
Read more   2020/10/23 posted in  BUG记录

[iOS底层]-objc_msgSend慢速查找流程

慢速查找汇编部分

[iOS底层]-objc_msgSend快速查找原理中我们分析了缓存命中的情况,则会返回相应的imp,不过CheckMissJumpMiss的情况下要如何进行处理我们还没有进行分析。根据CheckMissJumpMiss的源码,我们发现他们都会跳转到__objc_msgSend_uncached

Read more   2020/10/7 posted in  iOS底层

汇编指令查询

概述

ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。

本文只列举一些常见的基本指令,可以正常阅读汇编代码即可。有几个注意点:

  • 寄存器:为标号,不加前缀
  • 操作数顺序:目标操作数在左,源操作数在右
  • 立即数:前加#作为前缀
  • 寻址格式:常见的有三种
Read more   2020/9/24 posted in  iOS底层

iOS需要了解的ARM64汇编(搬运)

概述

早期的程序员发现机器语言在阅读、书写方面的问题,是如此的难以辨别和记忆,需要记住所有抽象的二进制码,为了解决这个问题,汇编语言就产生了。汇编语言是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。

Read more   2020/9/23 posted in  iOS底层

[iOS底层]-objc_msgSend快速查找原理

方法是如何读取的?

[iOS底层]-cache_t分析一文里,我们知道了方法是如何缓存起来的,缓存的目的是为了加快方法的查找速度,那么我们在调用方法的时候是如何去读取这些缓存的呢?

Read more   2020/9/23 posted in  iOS底层

iOS14一直卡在条款与条件,无法更新

以前装过iOS14 Bate版,苹果更新推出iOS 14正式版的推送后,点击更新,一直卡在条款与条件页面,无法更新,点击同意或不同意都没反应。

解决办法

退出iCloud登录,然后再点击更新下载就可以成功了。

2020/9/18 posted in  玩机技巧

[iOS底层]-cache_t分析

[iOS底层]-类的结构分析中我们讨论了类的结构如下:

同时使用首地址偏移的办法研究了bits,同样,今天我们也用此方法来研究一下类的cache

Read more   2020/9/18 posted in  iOS底层

[iOS底层]-SEL和IMP

SEL和IMP是什么?

  • SEL:方法编号,就像是一本书的目录,SEL是每章的标题。
  • IMP:函数指针地址,IMP就像是页码,通过SEL和对应IMP,我们就能找到函数的实现代码存放位置。
Read more   2020/9/17

使用Clang编译器把OC文件编译成C++文件

Clang是什么?

Clang是一个C、C++、Objective-C和Objective-C++编程语言的编译器前端,它采用了LLVM作为其后端。由Apple主导编写,基于LLVM的C/C++/Objective-C编译器。

Read more   2020/9/16 posted in  iOS底层

iTerm2连接远程服务器

  1. iTerm2->Preferences->Profiles,点击+号,添加一个新的profile。
Read more   2020/9/16 posted in  玩机技巧

音视频开发目录汇总

Read more   2020/9/15

iOS底层目录汇总

Read more   2020/9/15 posted in  iOS底层

[iOS底层]-类的结构分析

类的本质

类在OC中到底是什么,在底层又是如何实现的呢?今天我们就来探讨一下,首先打开objc4底层源码,我们找到Class的源码。

typedef struct objc_class *Class;
Read more   2020/9/14 posted in  iOS底层

[iOS底层]-类、元类、根元类的isa关系和继承关系

类、元类、根元类中isa的关系

首先我们在main.m文件中创建几个LJPerson对象进行分析。

Read more   2020/9/12 posted in  iOS底层

[iOS底层]-如何去探索iOS的底层源码

探寻底层源码的三种方式

工欲善其事必先利其器,我们在准备探寻iOS底层实现的时候,我们必须先要知道如何去找到源码,如何去查看我们想要查看的方法源码出处,下面就介绍三种方式给大家参考。

Read more   2020/9/11 posted in  iOS底层