- 博客(110)
- 资源 (11)
- 收藏
- 关注
转载 从“庖丁解牛”看股票交易的“顺势而为”
如今,我这把刀用了19年了,但是刀锋依然像刚在磨刀石上磨好的一样锋利,因为我发现牛的骨节之间有间隙,而且刀刃很薄,用很薄的刀刃插入有空隙的牛骨之间,绰绰有余,而且不仅不损坏刀锋,还省力。每一次行为,都是对你心中的“刀刃”的一种折损,每一次的行为,都是对自己交易之心的伤害,久而久之,交易之心千疮百孔,也会在这种“损耗”型交易里迷失自我,迷失本心。拉出你的交割单,找到那些让你舒服的交易,找到那些让你看得清楚的交易,找到那些让你从进场到出场都明明白白的交易,找到那些让你从始至终都不会过多担心的交易。
2023-08-21 10:02:04
287
原创 iOS中一种超简单的路由实现方式
看了很多的路由实现方式,发现实现的都太复杂,越是复杂的东西越是难以维护,当然复杂的东西好处就是覆盖面比较全。而本文则是使用一种比较简单的方式实现路由的,当然如有建议或者想法可以及时跟我沟通,让我也能有更好的进步。
2023-08-18 17:26:53
511
原创 iOS中的metaclass
它包含了一些关于Class结构体的信息,例如它所继承的父类、它所实现的方法、它所拥有的属性等等。metaclass描述了一个类的结构和行为,它包含了一些关于这个类的信息,例如它所继承的父类、它所实现的方法、它所拥有的属性等等。metaclass描述了一个类的结构和行为,它包含了一些关于这个类的信息,例如它所继承的父类、它所实现的方法、它所拥有的属性等等。metaclass描述了一个类的结构和行为,它包含了一些关于这个类的信息,例如它所继承的父类、它所实现的方法、它所拥有的属性等等。
2023-04-30 14:36:17
1292
原创 iOS weak的底层原理
当原始对象被释放时,runtime会遍历该对象对应的entry结构体中的所有weak指针,并将它们设置为nil。在使用weak关键字时,我们需要注意避免循环引用的问题,并确保所引用的对象在使用过程中不会被释放。当有其他对象持有该对象时,它的引用计数器会加1。当持有该对象的对象被释放时,它的引用计数器会减1。需要注意的是,在使用weak关键字时,我们需要确保所引用的对象不会在使用过程中被释放。因此,在使用weak关键字时,我们需要注意避免循环引用的问题,并确保所引用的对象在使用过程中不会被释放。
2023-04-30 14:33:29
398
原创 iOS weak的使用
其中,强引用是默认的指针类型,它会增加对象的引用计数,并在不需要时自动释放。在Block中使用self时:由于Block会持有其所在方法中使用到的所有变量和对象,如果在Block中使用self时不使用weak修饰符,则会形成循环引用。iOS开发中,我们经常会听到weak这个词,它是Objective-C语言中的一个特性,用于解决循环引用的问题。容易出现野指针:由于weak指针不会增加对象的引用计数,因此当对象被释放后,其对应的weak指针会自动变为nil。因此,在多线程环境下使用weak指针需要格外小心。
2023-04-30 14:32:25
1334
原创 iOS 循环引用
为了避免这种问题,我们可以使用弱引用或无主引用来打破对象之间的强引用关系。在上面的代码中,我们将Person类中的car属性设置为无主引用。例如,当一个视图控制器持有一个模型对象,并且这个模型对象也持有这个视图控制器时,就会出现循环引用。在上面的代码中,我们将Person类中的car属性设置为弱引用。iOS 循环引用是一个常见的问题,它会导致内存泄漏和程序的不稳定性。在本文中,我们将探讨iOS循环引用的示例,并提供一些解决方案。为了解决循环引用问题,我们可以使用弱引用或无主引用来打破对象之间的强引用关系。
2023-04-30 14:29:51
1907
原创 iOS 多线程使用示例
NSOperation是iOS中另一个常用的多线程技术,它是一个抽象类,可以用来封装一个任务。在这个示例中,我们创建了一个名为operation的NSBlockOperation对象,并将其添加到名为queue的NSOperationQueue中。在iOS中,多线程是指同时执行多个任务的能力。在这个示例中,我们手动创建了一个名为myThread的线程,并将其绑定到一个名为myThreadMainMethod的方法上。在本文中,我们将介绍iOS多线程的使用示例,以帮助开发人员更好地理解和应用多线程技术。
2023-04-30 14:29:10
2165
原创 iOS autorelease 示例研究
iOS autorelease是Objective-C中的一个自动内存管理机制,它通过在对象创建时将其添加到自动释放池中,在池被释放时自动释放对象,从而减少手动内存管理的工作量。这意味着,当自动释放池被释放时,这个对象会被自动释放。在上面的代码中,我们在循环中创建了100个NSString对象,并将它们添加到了自动释放池中。在上面的代码中,我们在一个新线程中创建了一个NSString对象,并将其添加到了自动释放池中。在上面的代码中,我们创建了一个NSString对象,并将其添加到了自动释放池中。
2023-04-30 14:27:34
1575
原创 iOS ARC
首先,ARC只能管理Objective-C对象的内存,不能管理C、C++等其他类型的对象。其次,ARC只是自动插入retain、release和autorelease方法的调用,而不能解决所有的内存管理问题。在ARC中,开发者不再需要手动管理对象的内存,这大大简化了开发过程,同时也减少了内存泄漏的风险。这些方法会根据对象的引用计数来自动管理对象的生命周期。总之,iOS ARC是一种非常方便的内存管理技术,可以让开发者更加专注于业务逻辑的实现。但是,在使用ARC时也需要注意一些问题,以避免出现不必要的麻烦。
2023-04-30 14:26:52
2134
1
原创 iOS中的autorelease
例如,在使用Block时,如果Block中使用了某个对象并将其加入到了autorelease池中,那么在Block被执行时这个对象可能已经被释放了,从而导致程序崩溃。在这个例子中,我们使用了NSString类的initWithFormat方法创建了一个字符串对象,并在其后调用了autorelease方法将其加入到autorelease池中。autorelease是iOS中的一种内存管理机制,它的原理很简单:当一个对象被加入到autorelease池中时,它不会立即被释放,而是等到池子被清空时才会被释放。
2023-04-30 14:24:27
2281
原创 iOS内存管理
ARC是一种自动化的内存管理机制,它通过在编译时插入内存管理代码来自动管理对象的引用计数。在ARC机制下,系统会自动管理对象的引用计数,从而避免了因为忘记释放内存而导致的内存泄漏问题。弱引用是指一种不持有被引用对象的弱指针,它不会增加被引用对象的引用计数。当对象不再被引用时,其引用计数会减少1。开发者不需要手动管理对象的引用计数,从而避免了因为忘记释放内存而导致的内存泄漏和野指针等问题。使用ARC机制可以让开发者不需要手动管理对象的引用计数,从而避免了因为忘记释放内存而导致的内存泄漏和野指针等问题。
2023-04-30 14:22:32
2654
原创 iOS Runtime:你不知道的那些事
这样,我们就可以在程序运行时进行一些“魔法”,比如动态创建一个类、替换一个方法的实现等等。具体来说,当我们调用一个不存在的方法时,iOS Runtime会先调用我们实现的methodSignatureForSelector方法来获取方法签名。这个时候,我们就可以使用iOS Runtime提供的函数method_exchangeImplementations来替换方法的实现。它指的是一组相关的类,它们都继承自同一个抽象基类,并且提供了不同的实现方式。这样,在调用原来的方法时,实际上会调用我们自己写的新方法。
2023-04-30 14:18:11
1182
原创 iOS 关于深copy和浅copy的一些误区
题记:请问property里面的copy是深copy还是浅copy?面对上面的这个问题,你先的理解什么是深copy和浅copy,参考以下的图说明:我们创建了一个对象A,然后指针P1指向了对象A,这时候进行了浅copy,简单说就是把指针P2直接指向了对象A,而进行深copy之后又创新创建了对象B,同时新的指针指向了对象B。总结上面就是,浅copy就是指针的copy,深copy就是指针和对象的copy那我们在property里面用的copy到底是哪一种copy方式?这主要看你copy的内容,.
2022-05-19 16:46:43
153
原创 ‘async‘ call in a function that does not support concurrency
swift5.5中加入了async/await我写了一段这样的代码:DispatchQueue.global().async { [weak self] in self?.test() } } func test() async { let m = await cakkBackData4() print(m)}然后提醒我如下的错误:‘async’ call in a function that does not support conc.
2022-04-16 21:05:23
3255
翻译 KVC简介 待续
KVCKey-value编码是一种由NSKeyValueCoding非正式协议启用的机制,对象采用该协议来提供对其属性的间接访问。当一个对象是key-value编码兼容的,它的属性可以通过一个简洁、统一的消息传递接口通过字符串参数寻址。这种间接访问机制补充了实例变量及其相关访问器方法所提供的直接访问。通常使用访问器方法来获得对对象属性的访问权。get访问器(或getter)返回属性的值。设置访问器(或setter)设置属性的值。在Objective-C中,你也可以直接访问属性的底层实例变量。以上述任
2022-03-28 23:51:42
448
原创 iOS15使用带Header的tableview 顶部出现空白问题
使用带Header的tableview 顶部出现空白问题如果你的系统是iOS15中出现,那么这就是iOS15 SDK带来的新问题,需要单独处理,处理方式如下:if (@available(iOS 15.0, *)) { table.sectionHeaderTopPadding = 0;}问题原因:UITableView新增了一条新属性:sectionHeaderTopPadding, 默认会给每一个section header 增加一个高度,当我们使用 UITableViewStyl
2021-10-23 14:36:24
3444
原创 metaclass初步研究
/************************************************************************ objc_allocateClassPair* fixme* Locking: acquires runtimeLock**********************************************************************/Class objc_allocateClassPair(Class superclass,
2021-06-17 14:52:59
174
原创 通过将OC编译成C++ 一探究竟(边学编写,帮忙点评)
只说重点找到类得信息,如下:struct _class_t { struct _class_t *isa; struct _class_t *superclass; void *cache; void *vtable; struct _class_ro_t *ro;};struct _class_ro_t { unsigned int flags; unsigned int instanceStart; unsigned int instanceSize; const.
2021-03-25 15:23:39
291
原创 Runtime 源码梳理: 草稿
/// An opaque type that represents an Objective-C class.typedef struct objc_class *Class;/// Represents an instance of a class.struct objc_object { Class _Nonnull isa OBJC_ISA_AVAILABILITY;};/// A pointer to an instance of a class.typedef str.
2021-03-23 21:25:32
155
原创 2021年iOS基础知识汇总-初步学习篇
Category类struct category_t { const char *name; classref_t cls; struct method_list_t *instanceMethods; struct method_list_t *classMethods; struct protocol_list_t *protocols; struct property_list_t *instanceProperties; // Field..
2021-03-23 10:39:54
503
原创 Swift枚举-持续整理中
枚举一个枚举定义了一个通用型的一组相关的值,使您能够工作在你的代码中的类型安全方式的值。如果您熟悉C,您将知道C枚举将相关名称分配给一组整数值。Swift中的枚举更加灵活,不必为每种枚举都提供值。如果为每种枚举情况提供了一个值(称为原始值),则该值可以是字符串,字符或任何整数或浮点类型的值。或者,枚举案例可以指定要存储的任何类型的关联值以及每个不同的案例值,这与其他语言中的并集或变体很相似。您可以将一组常见的相关案例定义为一个枚举的一部分,每个案例都有一组与之相关的不同类型的适当类型的值。S
2021-03-22 22:26:48
283
原创 闭包精讲-翻译与苹果原文
闭包闭包是功能完备的功能块,可以在代码中传递和使用。Swift中的闭包类似于C和Objective-C中的块以及其他编程语言中的lambda。闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。这称为关闭这些常量和变量。Swift为您处理捕获的所有内存管理。笔记如果您不熟悉捕获的概念,请不要担心。下面在捕获值中对其进行了详细说明。正如Function中介绍的那样,全局和嵌套函数实际上是闭包的特殊情况。闭包采用以下三种形式之一:全局函数是具有名称且不捕获任何值的闭包。
2021-03-22 16:55:44
172
原创 Dispatch
Dispatch通过将工作提交给系统管理的调度队列,在多核硬件上并发执行代码。概述Dispatch,也称为Grand Central Dispatch(GCD),包含语言功能、运行时库和系统增强功能,为支持macOS、iOS、watchOS和tvOS中的多核硬件上的并发代码执行提供了系统的、全面的改进。BSD子系统、Core Foundation和Cocoa api都进行了扩展,以使用这些增强功能来帮助系统和应用程序更快、更高效地运行,并提高响应能力。考虑一下单个应用程序有效地使用多个核心有
2021-03-21 10:30:29
725
原创 Swift:什么时候需要mutating这个参数
Swift中有两种类型:值类型和引用类型structure和enumeration是值类型(value type)class是引用类型(reference type)示例:在结构体中,有一个实例方法,如果直接修改属性的值,编译器会报错。struct Sefn { var i = 0 mutating func moveI(fI: Int) { i = fI }}上面中如果不添加mutating这个修饰符,则会出错,提示为:Cannot assig
2021-03-05 16:24:21
1015
原创 OC Protocol(待续)
Protocol协议声明任何类都可以选择实现的编程接口。协议使得两个通过继承而远近相关的类可以相互通信以实现某个目标。因此,它们提供了一种替代子类化的方法。任何可以提供对其他类有用的行为的类都可以声明一个编程接口,以匿名方式提供该行为。任何其他类都可以选择采用协议并实现其一个或多个方法,从而利用该行为。如果协议采纳者实现了协议中的方法,则声明协议的类将调用这些方法。其实OC中的Protocol跟Java中的Interface是非常相似的。Formal and Informal Protocols有
2020-10-15 13:32:28
288
原创 objc4-787.1源码编译(未完 不续 参考库C老师的即可)
1 下载源码打开此处https://opensource.apple.com/选择一个系统进入:搜索objc2 打开工程打开objc.xcodeproj编译,出现如下问题:Showing All MessagesTraditional headermap style is no longer supported; please migrate to using separate headermaps and set ‘ALWAYS_SEARCH_USER_PATHS’ to NO.
2020-10-13 17:12:23
603
原创 Swift源码编译(持续更新中)
下载源码创建源码存放位置mkdir swift-sourcecd swift-source下载源码git clone https://github.com/apple/swift.git./swift/utils/update-checkout --clone或者git clone git@github.com:apple/swift.git./swift/utils/update-checkout --clone-with-ssh...
2020-10-13 16:39:18
497
原创 Objective-C Runtime Programming Guide
Objective-C Runtime Programming Guide与运行时交互Objective-C程序在三个不同的层次与运行时系统交互:通过Objective-C源代码;通过在基础框架的NSObject类中定义的方法;通过直接调用运行时函数。Objective-C Source Code在大多数情况下,运行时系统在后台自动工作。您只需编写和编译Objective-C源代码就可以使用它。当您编译包含Objective-C类和方法的代码时,编译器将创建实现语言动态特性的数据结构和函
2020-10-12 16:56:31
236
转载 Swift 中的 Sequence 基础篇
内容简介:Swift 中的 Sequence 基础篇本文转载自:添加链接描述本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。Swift 是一门可以让你按照自己喜欢的方式写代码的语言,它有很强的扩展能力,而它众多的 Collection Protocols 则是这种扩展能力的提供者之一。本文介绍一下 Sequance 和 Iterator 的基本概念,及如何实现一个 Sequence。撰写本文时的 Swift 版本是 Swift 3.1。SequenceSequence 是一系列相同
2020-08-14 11:33:05
1671
原创 加了 Alert Actionsheet 出来的吧, iOS12.x+ 的 bug。。。
2020-07-06 15:06:52.402824+0800 工作清单[52603:1407850] [LayoutConstraints] Unable to simultaneously satisfy constraints.Probably at least one of the constraints in the following list is one you don’t want.Try this:(1) look at each constraint and try to fig
2020-07-06 15:45:54
209
原创 Xcode11+打包时提示:com.apple.transporter.mediatoolkit-2.0.0.jar
升级到Xcode 11* 后,上传app store失败,提示需要安装 .jarApp Store Connect Operation ErrorA downloaded software component is corrupted and will not be used. https://contentdelivery.itunes.apple.com/transporter/repositories/j2se8/2.0.0/bundles/com.apple.transporter.mediat
2020-07-01 18:11:12
2412
原创 IteratorProtocol说明
其实所有的内容均来自Apple开发官网IteratorProtocol类型:Protocol说明:一次提供一个序列值的类型。申明protocol IteratorProtocol概述迭代器协议与序列协议紧密相连。序列通过创建一个迭代器来提供对其元素的访问,迭代器跟踪其迭代过程,并在一次返回一个元素。无论何时在数组、集合或任何其他集合或序列使用for-in,都将使用该类型的迭代...
2020-04-15 18:26:36
286
原创 NSInvocation 理解
NSInvocation 理解说明类说明类申明简介使用调用与方法签名配置调用对象selectortargetsetArgument:atIndex:getArgument:atIndex:argumentsRetainedretainArgumentssetReturnValue:getReturnValue:优势使用说明类说明作为一个呈现Objective-C消息的对象。类申明@int...
2020-03-19 15:14:56
925
原创 【bug系列】IPA processing failed
在上传到APP Store 或者通过Ad Hoc导出包的时候出现如下错误这个时候有一个可能的错误就是Framework在制作的时候将X86和ArmX系列做了融合而在上线的时候APP Store是不支持X86架构的,所以需要剔除。解决办法在工程中添加如下脚本# Without further ado, here’s the script. Add a Run Script step t...
2019-11-29 14:10:17
411
原创 Logos介绍以及用法【未完待续】
参考链接Logos wiki定义Logos是theteosdevelopment套件的一个组件,它允许使用一组特殊的预处理器指令轻松而清晰地编写方法挂钩代码。概述Logos提供的语法极大地简化了MobileSubstrate扩展(“tweaks”)的开发,它可以在整个OS中钩住其他方法。在这种情况下,“方法钩住”是指用于替换或修改在电话上的其他应用程序中找到的类的方法的技术。...
2019-11-29 10:48:42
960
原创 【逆向】class-dump导出头文件
链接地址:class-dump简介这是一个命令行实用程序,用于检查存储在Mach-O文件中的Objective-C运行时信息。它为类、类别和协议生成声明。这与使用“otool-ov”提供的信息相同,但作为普通的Objective-C声明提供,因此它更加紧凑和可读。This is a command-line utility for examining the Objective-C runt...
2019-11-27 10:04:07
478
原创 Swift的initialization
InitializersInitializers被调用来创建特定类型的新实例。其最简单的形式中,一个初始化类似于实例方法不带参数,使用init关键字写成:init() { // }下面示例定义了的结构体Fahrenheit,用来存储存储温度。Fahrenheit结构具有一个存储的属性,温度,它的类型是Double:struct Fahrenheit { var temp...
2019-11-26 17:36:14
122
原创 Type 'XXX' does not conform to protocol 'SomeProtocol'
有时候我们在调试Swift程序的时候会出现如下的情况:Type ‘SomeClass’ does not conform to protocol ‘SomeProtocol’碰到这个问题该怎么解决了?我们到苹果Swift开发文档看看参考文档里面有Initializer Requirements当我们定义一个protocol的时候,如下示例:protocol SomeProtocol ...
2019-11-14 13:57:54
5154
原创 报错Provisioning profile "XX" doesn't include signing certificate "xx developer"
讲一下我是怎么解决的把,我当时链接的是真机,跑的时候把release的证书加载了上面,所以一直报错,当我改成debug模式下的话就ok了,还是自己不小心,仅供参考~...
2019-10-13 17:40:41
939
未来商业模式30个大胆思考,中国99%的公司和集体可能消失
2019-02-18
Course teacher
2018-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人