自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 SwiftUI简单基础知识学习

当我们谈论SwiftUI的简介和基础语法时,首先需要了解SwiftUI是什么以及它的特点。SwiftUI是苹果公司推出的一种用于构建应用程序用户界面的框架。它是基于Swift语言的,具有声明式的语法,可以让开发者更简单、更高效地创建用户界面。下面是一些SwiftUI的基础语法和概念:SwiftUI的核心构建块是视图(View),它代表了应用程序的用户界面组件。视图可以是简单的,比如文本标签(Text)、按钮(Button),也可以是复杂的,比如列表视图(List)或者表单视图(Form)。

2023-09-05 10:06:24 2819

原创 Python中的异常处理机制

expression: 表达式,一般是判断相等,或者判断是某种数据类型的bool判断的语句。在Python2.5之前的版本,finally需要独立使用,不可以和try配合,之后才演变成现在的模式。程序中出现的错误,但有没有通过异常去捕获,以至于直接抛出,导致程序的崩溃。当except代码块有多个的时候,当捕获到第一个后,不会继续往下捕获。能监控并捕获到异常,将异常部位的程序进行修理使得程序继续正常运行。无法确定是哪种异常的情况下使用的捕获方法。确定是哪种异常的情况下使用的捕获方法。

2023-05-22 22:42:41 646 1

原创 python类的高级函数

如果定义了该函数,当print当前实例化对象的时候,会返回该函数的return信息。参数:key当前的属性名,value当前的参数对应的值。当调用的属性或者方法不存在时,会返回该方法定义的信息。key:调用任意不存在的属性名。返回值:可以是任意类型也可以不进行返回。返回值:一般返回对于该类的描述信息。返回值:与函数情况相同可有可无。拦截当前类中不存在的属性与值。本质是将一个类变成一个函数。

2023-05-18 23:57:57 444

原创 Python类的继承

通过继承基类来得到基类的功能所以我们把被继承的类称作父类或基类,继承者被称作子类代码的重用。

2023-04-23 23:08:46 1259 2

原创 Python递归函数、匿名函数lambda、类的常用装饰器

一个函数不停的将自己反复执行通过返回值,直接执行自身函数count = 0count += 1if count!= 5:else:test()f()users = [也是一种函数可以接受函数作为参数可以返回函数接收一个函数,内部对其处理,然后返回一个新函数,动态的增强函数功能将c函数在a函数中执行,在a函数中可以选择执行或不执行c函数,也可以对c函数的结果进行二次加工处理将被调用的函数直接作为参数传入装饰器的外围函数括弧将装饰器与被调用函数绑定在一起。

2023-03-27 23:11:53 390

原创 Python参数类型定义、私有函数与变量、全局变量

无法被实例化后的对象调用的类中的函数与变量类内部可以调用私有函数与变量只希望类内部业务调用使用,不希望被使用者调用在变量或函数前添加__(2个下横线),变量或函数名后面无需添加passcat.run()cat.jump()

2023-03-25 22:29:36 995 1

原创 Python 面向对象

class来声明类,类的名称首字母大写,多单词情况下每个单词首字母大写doname = '小慕'xiaomu = Person() # 类的实例化print(xiaomu.name) # 通过实例化进行属性调用xiaomu.dump() # 通过实例化进行函数调用。

2023-03-21 16:49:43 253

原创 python函数的参数

1.1、函数中定义的参数没有默认值,在调用函数时如果不传入则报错1.2、在定义函数的时候,参数后边没有等号与默认值1.3、错误:def add(a=1, b=1) 是错误的在定义函数的时候,没有默认值且必须在函数执行的时候传递进去的参数,且顺序与参数顺序相同,就是必传参数。

2023-03-20 19:15:39 375

原创 初识Java

1、一般大家说的Java的版本,就是指Java SE的版本、JDK的版本。1、Java有3大版本:Java SE、Java ME、Java EE。1、C\C++的跨平台:使用平台相关的编译器生成对应平台的可执行文件。1、要想顺利开发Java程序,有2个必须要安装的软件:JDK、JRE。3、推荐的Java学习路线:Java SE -> Java EE。2、Java SE(Java平台标准版)3、Java ME(Java平台微型版)4、Java EE(Java平台企业版)2、JDK:Java开发工具包。

2023-01-05 18:18:08 467 1

原创 微信小程序的特点、开发能力及运行机制

小程序采用的是双线程结构,一个线程负责视图的渲染,一个线程负责业务逻辑的处理,两个线程都通过WeixinJSBridag与微信Native底层进行通讯,包括两者之间进行的事件与数据的交换,也是通过它完成的。所有平台能力、硬件能力也是通过WeixinJSBridge间接提供的。

2022-10-09 23:33:43 2082

原创 Swift中的内存访问冲突、指针、局部作用域

Swift中也有专门的指针类型,这些都被定性为“Unsafe”(不安全的),常见的有以下4中类型。

2022-09-30 12:25:57 787

原创 Swift中的内存管理

4、如果想在定义闭包属性的同时引用self,这个闭包必须是lazy的(因为在实例初始化完毕之后才能引用self)6、如果lazy属性是闭包调用的结果,那么不用考虑循环引用的问题(因为闭包调用后,闭包的生命周期就结束了)3、逃逸闭包:闭包有可能在函数结束后调用,闭包调用逃离了函数的作用域,需要通过@escaping声明。3、在闭包表达式的捕获列表声明weak或unowned引用,解决循环引用问题。2、非逃逸闭包:闭包调用发生在函数结束前,闭包调用在函数作用域内。2、Swift的ARC中有3种引用。

2022-09-22 23:25:21 1050

原创 Swift中的访问控制(Access Control)及断言等知识补充

1、在访问权限控制这块,Swift提供了5个不同的访问级别(以下是从高到低排序,实体指被访问级别修饰的内容)2、如果没有显式设置扩展的访问级别,扩展添加的成员的默认访问级别,跟直接在类型中定义的成员一样。1、类型的访问级别会影响成员(属性、方法、初始化器、下标)嵌套类型的默认访问级别。2、协议实现的访问级别必须 >= 类型的访问级别,或者 >= 协议的访问级别。1、协议中定义的要求(方法)自动接收协议的访问级别,不能单独设置访问级别。1、如果有显式设置扩展的访问级别,扩展添加的成员自动接收扩展的访问级别。

2022-09-12 22:04:38 987

原创 Swift中的扩展(Extension)

给协议进行扩展后,凡是遵守了这个协议的都会有对应的扩展方法,以下面为例,编写一个函数,判断一个证书是否为奇数。如果希望自定义初始化器的同时,编译器也能够生成默认初始化器,那么可以在扩展中编写自定义初始化器。可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等等。Swift中的扩展,有点类似于OC中的分类(Category)。扩展可以给协议提供默认实现,也间接实现 可选协议 的效果。不能添加指定初始化器,不能添加反初始化器。

2022-09-04 16:50:36 2694

原创 Swift中运算符相关内容

自定义运算符 (Custom Operator) 可以自定义新的运算符:在全局作用域使用operator进行声明

2022-09-01 23:25:37 706

原创 汇编分析Swift中的String

字符串初始化时长度小于等于15的,字符串内容直接存放在str变量的内存中;字符串初始化时长度大于15的,字符串内容存放在__TEXT, __cstring中(常量区),字符串的地址值信息存放在str变量的后8个字节中,但是需要通过计算才能得出真实的地址值;append后如果字符串长度小于等于15,字符串内容依然存放在str变量内存中;append后如果字符串长度大于15,会开辟堆空间,因为常量区是不可以进行更改的。...

2022-08-25 23:03:17 945 2

原创 Swift中的泛型(Generics)

Swift中的泛型是通过对元数据的处理实现的。如果协议中有associatedtype,那么会有类型识别不了的问题。

2022-08-19 00:04:45 843

原创 Swift中的Error处理

Swift中可以通过Error协议自定义运行时的错误信息。函数内部通过throw抛出自定义Error,可能会抛出Error的函数必须加上throws声明。需要使用try调用可能会抛出Error的函数。可以使用do-catch捕捉Error。

2022-08-07 11:48:52 1290

原创 Swift中的类型相关内容

X.self是一个元类型(metadata)的指针,metadata存放着类型相关信息

2022-08-02 00:05:33 554

原创 代码可读性,前置检查、注释及总结

可读性是提高可靠性和可维护性的重要因素。 可以通过结构性优化和外表优化等方式提高可读性。 提高可读性是一个常见的重构目标。 自描述的代码优于实现注释。 应该以标准方式编写详细的、格式化的文档注释,使其易于阅读。...

2022-07-29 11:09:32 393

原创 Swift中的协议

协议可以用来定义方法、属性、下标的声明,协议可以被枚举、结构体、类遵守。

2022-07-27 18:51:00 1897

原创 Swift初始化器及可选链

如果链中任何一个节点是nil,那么整个链就会调用失败,可选链应用的地方还是很多的,在OC里面我们通常会加很多判断以避免崩溃,在Swift里面,因为有了可选链会减少很多我们自己的判断,提高了安全性。如果初始化器调用一个可失败初始化器导致初始化失败,那么整个初始化过程都失败,并且之后的代码都停止执行。可失败初始化器可以调用非可失败初始化器,非可失败初始化器调用可失败初始化器需要进行解包。可以用一个非可失败初始化器重写一个可失败初始化器,但反过来是不行的。deinit不接受任何参数,不能写小括号,不能自行调用。.

2022-07-24 16:37:28 141

原创 提高代码可续性的小技巧,以connectTo方法为例。

编写可读的代码是一门被低估的技术,学校很少教授这种技术,但它却与软件的可靠性、维护和发展密切相关。程序员通常学习用机器容易理解的东西来实现所需功能的代码。这个编码过程需要添加一层又一层的抽象来将功能分解为更小的单元。...

2022-07-24 14:33:42 261

原创 Swift初始化相关内容

Swift在编码安全方面是煞费苦心,为了保证初始化过程的安全,设定了两段式初始化、安全检查。

2022-07-18 12:12:36 481

原创 汇编分析Swift多态原理

Swift中多态的实现原理,是类似于C++的虚表,直接将对象将来要调用的方法地址放到了类型信息里,而且是编译完就可以确定的。

2022-07-06 14:37:38 333

原创 Swift中的继承(Inheritance)

继承(Inheritance),值类型(枚举、结构体)不支持继承,只有类支持继承。没有父类的类,称为:基类,Swift并没有像OC、Java那样的规定:任何类最终都要继承自某个基类。子类可以重写父类的下标、方法、属性,重写必须加上override关键字。......

2022-07-04 16:39:30 1482

原创 Swift中的下标(subscript)

下标(subscript),使用subscript可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为:小标脚本。subscript的语法类似于实例方法、计算属性,本质就是方法(函数)。

2022-07-03 20:36:53 1346

原创 swift类型属性及其注意点

一、类型属性细节不同于存储实例属性,你必须给存储类型属性设定初始值 因为类型没有像实例那样的init初始化器来初始化存储属性

2022-07-01 14:56:39 468

原创 动态规划算法

动态规划1.背包问题简单算法动态规划2.背包问题FAQ再增加一件商品该如何呢?行的排列顺序变化时结果将如何?增加一件更小的商品将如何呢?可以偷商品的一部分吗?旅游行程最优解处理相互依赖的情况3.最长公共子串1.背包问题简单算法数量非常的多,算法运行时间非常的长。动态规划先解决小问题,再逐步解决大问题。先从一个网格开始:商品1234吉他1500150015001500音响1500150015003000笔记本电脑150015002000

2021-10-31 22:56:33 77

原创 高质量编程

高质量编程的话题非常的宏大,涉及的方面也非常的多,这里只是一些抛砖引玉的观点和简单的例子,目的是让大家在编程时有意识的去提高代码的质量,一旦有了这个意识,在行动的时候就会很不一样。我之所以选择这个比较宏大,比较难讲的主题,不去选择一个特定的知识点,就是觉得有意识的去提高代码的质量是对我们今后的工作有非常大的帮助的。写在正式开始之前:高质量编程的首要技术使命:管理复杂度。人类更易于理解许多项简单的信息,而不是一项复杂的信息。所有软件设计技术的目标都是把复杂问题分解成简单的部分。子系统间的相互依赖越少,

2021-07-19 20:28:54 941

转载 runloop、自动释放池、线程、GCD

runlooprunloop是用来处理事件的循环。NSRunloop是CFRunloop的封装,CFRunloop是一套C接口,源码地址。runloop处理消息的流程是“接收消息->恢复活跃->处理消息->进入休眠”。runloop作用保持程序持续运行,程序一启动就会开一个主线程,主线程一开起来就会跑一个主线程对应的RunLoop,RunLoop保证主线程不会被销毁,也就保证了程序的持续运行 处理App中的各种事件(比如:触摸事件,定时器事件,Selector事件等)

2021-07-14 17:34:55 332

原创 iOS 使用NSTextAttachment在富文本中插入图片在实际项目中遇到的问题

1、图片是从网络中获取的,如何缩短请求图片的时间?可以从一开始请求网络数据结束后,获取到了图片的URL之后。开始用SDWebImageView下载图片,因为SDWebImageView有一个特性,就是相同URL下的图片下载后会进行缓存,以后要用的话,已经下载好的会去缓存中查找,所以我们在最开始的时候去下载,可以缩短请求图片的时间。2、获取图片之后该怎么同步到NSTextAttachment上?在给attachment赋值图片的时候,可以单独创建一个imageview,让imageview用SDW

2021-07-05 21:09:19 1031

原创 软件质量的普遍原理

世界上没有免费的午餐,即使有,味道也一定不会好到哪里去。但是软件开发跟高级烹调技术差之十万八千里,并且软件质量是如此的与众不同。软件质量的普遍原理就是改善质量以降低开发成本。理解这一原理依赖于理解一个很容易观察到的关键事实:提高生产效率和改善质量的最佳途径就是减少花在这种代码返工上的时间,无论返工的代码是由需求、设计改变还是调试引起的。软件产品的业界平均生产效率大约是每人每天10 到50行最终交付代码(包括所有非编码开支)。敲出10到50行的代码也就只是几分钟的事情,那么每天剩下的时间是怎么度过的呢

2021-06-24 11:27:56 115

原创 高质量子程序3——一个好的名字

1、如何选择一个能够在恰当的抽象层次上描述子程序的名字?描述子程序所做的所有事情,子程序的名字应当描述其所有的输出结果以及副作用。如果一个子程序的作用是计算报表总额并打开一个输出文件,那么把它命名为ComputeReportTotals()就还不算完整。ComputeReportTotalsAndOpenOutputFile() 是很完整,但是又太长且显得有点傻如果你写的是有一些副作用的子程序,那就会起出很多又长又笨的名字。解决的方法不是使用某个描述性较弱的子程序名,而应该换一种方式编写程序,直

2021-06-15 11:34:03 184

原创 高质量子程序2——高内聚性

1、在子程序层上设计最重要的关注点是什么?在单个子程序这一层次上,内聚性是设计时常用的启发式方法。对子程序而言,内聚性是指子程序中各种操作之间联系的紧密程度。有些程序员更喜欢使用“强度(strength)"这一术语:一个子程序中各种操作之间的联系有多强?像cosine()(余弦函数)这样的函数就是极端内聚的,因为整个程序 高内聚,只完成一项功能。而CosineAndTan()(余弦与正切)这个函数的内聚性相对较弱,因为它完成了多于一项的操作。我们的目标是让每一个子程序只把一件事做好,不再做任何其

2021-06-09 22:00:52 270

原创 高质量的子程序1

1、什么是子程序?子程序是为实现一个特定的目的而编写的一个可被调用的方法或过程。2、使用子程序有什么好处?子程序的使用使得程序变得更加易读,更易于理解,比任何编程语言的任何功能特性都更容易。子程序也是迄今为止发明出来的用以节约空间和提高性能的最重要手段。统一在一个地方进行修改。子程序的使用使得现代化编程成为可能。2.1、降低复杂度。创建子程序的一个最重要的原因,就是为了降低程序的复杂度。可以通过创建子程序来隐藏一些信息,这样你就不必再去考虑这些信息了。当然,在你要编写这个子程序的时候

2021-06-08 13:07:09 880

转载 Homebrew国内如何自动安装(国内地址)

自动脚本(全部国内地址)(在终端中复制粘贴回车下面脚本)苹果电脑 常规安装脚本(推荐 完全体 几分钟安装完成):/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"苹果电脑 极速安装脚本(精简版 几秒钟安装完成):/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebr

2021-05-08 10:12:43 139

原创 算法题:一手顺子,把牌重新排列成组,使得每个组的大小都是 W,且由 W 张连续的牌组成。OC实现。

爱丽丝有一手(hand)由整数数组给定的牌。现在她想把牌重新排列成组,使得每个组的大小都是 W,且由 W 张连续的牌组成。如果她可以完成分组就返回 true,否则返回 false。来源:力扣(LeetCode)暴力解法,用OC实现。实现思路:将每张牌的张数进行统计,并放入字典中; 对字典的key进行升序排序; 循环字典,拿字典key中的值,连续找w个数,如果找到了就在字典中把值减1,如果没找到就是不能组成顺子,返回NO。-(BOOL)isNStraightHand:(NSA.

2021-04-14 13:07:16 144

原创 iOS面试

1、weak属性如何自动置nil的?runtime会对weak属性进行内存布局,构建hash表。以weak属性对象内存地址为key,weak属性值为value,当对象引用计数为0时,dealloc方法调用时,会将weak属性值自动置nil。2、hash表?哈希表是一种根据关键码去寻找值的数据映射结构。f(key)找到要找的值,key就是关键码,f()是哈希函数。3、遇到的问题1画面上有UIwebview,他的delegate是控制器,在webview加载完成后需要做某些事情,比如加载某些

2021-03-22 21:00:14 177

原创 GCD实现和ARC、Blocks、GCD使用范例

Dispatch Queue通常,应用程序中编写的线程管理用的代码要在系统级实现。无论编程人员如何努力编写管理线程的代码,在性能方面也不可能胜过XNU内核级所实现的GCD。用于实现Dispatch Queue而使用的软件组件:libdispatch 提供技术:Dispatch Queue; Libc(pthreads) 提供技术:pthread_workqueue; XNU内核 提供技术:workqueue;GCD的API全部为包含在libdispatch库中的C语言函数。Disp

2021-03-07 15:46:26 144

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除