- 博客(189)
- 资源 (2)
- 收藏
- 关注
原创 iOS中的多线程开发技术第一篇(GCD)
多线程编程是现代应用程序开发中的一个重要部分,尤其是在 iOS 开发中,它可以帮助我们提高应用的性能和响应速度。iOS 提供了多种多线程编程技术,包括 GCD(Grand Central Dispatch)、NSThread、NSOperation 和 pthreads。本文将详细介绍这些多线程技术,帮助你理解并掌握它们的使用。
2024-07-24 02:21:14
1617
原创 Flutter禁止及交互的两种方式
这是我知道的两种禁止点击事件的方法,两种方式都可以实现禁止点击事件的效果,可以根据需要来选择,如果你有其他的方法,可以给笔者留言,大家一起学习,一起进步。
2020-07-02 00:08:34
6061
1
原创 Flutter实现iOS TabBarController效果和android TabHost效果
先上截图, 如何实现下图的效果呢。对于iOS开发者,我们可以使用UITabBarController来实现,对于android开发者,我们可以使用FragmentTabHost来实现。在Flutter中并没有这两个控件,进入正题,我们看看在Flutter中我们如何使用Flutter中的PageView来实现这种效果。
2020-06-22 09:43:31
1380
1
原创 UIScrollView的Content Size, Content Inset属性
做iOS有好长时间了,今天再次写到UIScrollView的时候再次遇到了ContentSize,ContentInset,Scroll Indicator等属性,想起刚刚入门的时候的困惑,决定把它写下来,做个记录,以后忘记的时候也可以温故知新。也希望给初学者一个好的借鉴,少走点弯路,嘿嘿,不多说了,进入正题,第一次写博客,语言组织可能不太好,如果错误或者说的不准确的地方还望各位大神们多多指正。
2014-12-27 16:15:26
1877
1
原创 C语言中的指针
C语言指针核心概念解析 指针是C语言的灵魂,它直接操作内存地址,赋予程序高效灵活的内存管理能力。本文系统讲解了指针的核心概念:从基础定义(指针即内存地址变量)、运算符(&取地址、*解引用),到指针与数组的关系(数组名即指针常量);从多级指针(二级指针、指针数组)到函数指针(回调函数实现);从动态内存管理(malloc/free)到字符串处理。同时指出了常见陷阱(野指针、内存泄漏)并提供了防御性编程建议。通过实现动态数组的实战案例,展示了指针在实际开发中的强大功能。掌握指针是深入理解C语言的关键。
2026-04-04 00:38:13
266
原创 栈(Stack)详解 + C语言实现
摘要 栈是一种遵循"后进先出"(LIFO)原则的线性数据结构,只允许在栈顶进行插入(push)和删除(pop)操作。文章详细介绍了栈的基本概念、核心特性(LIFO)和基本操作(时间复杂度均为O(1)),包括顺序栈和链式栈两种实现方式。重点阐述了栈在计算机科学中的广泛应用场景:函数调用栈、表达式求值、括号匹配、浏览器历史记录以及深度优先搜索(DFS)等。此外还介绍了栈的变体(最小栈、单调栈)和复杂度分析,并提供了算法面试中的常见题目和最佳实践建议。栈作为一种基础而强大的数据结构,其简洁性和
2026-04-02 22:48:28
375
原创 C语言变量详解:从定义到内存本质(彻底搞懂)
如果说 C 语言的核心是“理解计算机”,那么变量,就是你接触内存的第一步。这是因为 static 变量只初始化一次,并且在程序运行期间一直存在。很多初学者会认为变量只是“用来存数据的东西”,但这个理解还不够深入。局部变量通常存储在栈区,系统不会自动为其赋初值。输出结果是随机值(也称为“垃圾值”)。输出结果为 20,因为局部变量优先。你在代码中操作的是变量名,本质上操作的是这块内存。变量所在的位置决定了其生命周期。这是初学者最常见的问题之一。在整个文件范围内都可以访问。这表示不同类型变量在内存中的占用空间。
2026-03-26 16:39:20
224
原创 数据结构与算法之希尔排序
希尔排序是插入排序的优化版,它通过“先宏观调整,后微观调整”的策略,有效减少了数据交换的次数。虽然它不如快速排序或归并排序那样高效,但它在中等规模数据的排序中表现良好,且代码实现相对简单,是理解排序算法优化思路的重要案例。
2026-03-07 00:29:08
268
原创 由浅入深一篇文章讲解下iOS中的Block
本文详细介绍了iOS开发中的Block特性。Block本质是匿名函数对象,能捕获外部变量,语法灵活。文章解析了Block的基本语法、三种类型(全局/栈/堆)及其本质结构,并通过clang转换展示了底层实现。重点阐述了Block在回调、异步、枚举等场景的核心应用,以及捕获变量规则和循环引用问题。最后对比了Block与Delegate的适用场景,指出当前开发中Block为主、Delegate为辅的趋势。文中包含大量代码示例,从原理到实践全面剖析了Block在iOS开发中的重要性。
2026-02-02 02:21:25
734
原创 PerformSelector may cause a leak because its selector is unknown
本文分析了iOS开发中使用performSelector:方法时出现的"PerformSelector may cause a leak because its selector is unknown"警告。警告产生的原因是:1)selector是运行时动态生成的,编译器无法推断目标函数;2)返回值类型不透明;3)ARC无法确定内存管理规则。文章提供了三种解决方案:1)使用编译指令局部忽略警告;2)改用静态方法调用消除动态性;3)使用NSInvocation彻底解决。虽然示例中的void
2026-01-22 01:30:59
577
原创 iOS开发设计模式篇第三篇MVP设计模式
本文系统介绍了iOS开发中的MVP设计模式。针对MVC模式导致的Controller臃肿问题,MVP通过分离职责解决:View只负责展示,Presenter处理业务逻辑,Model管理数据。文章详细阐述了MVP的核心原则(View不直接访问Model、Presenter不依赖UIKit等),并通过用户信息展示示例演示了具体实现。与MVC/MVVM对比,MVP具有业务逻辑集中、易于测试等优点,但也存在类数量增多的缺点。最后指出MVP特别适合业务复杂的项目,在实际工程中可结合Router、Service等进一步
2026-01-15 11:24:45
571
原创 一文搞懂 iOS 中的 KVO:原理、用法与避坑指南
KVO(Key-Value Observing)是iOS开发中观察对象属性变化的机制,但使用中存在诸多痛点。本文详细解析了KVO的工作原理:通过动态生成NSKVONotifying_子类,在setter方法中插入willChangeValueForKey、原始setter和didChangeValueForKey调用,最终触发observeValueForKeyPath回调。常见问题包括忘记移除观察者导致的崩溃、重复添加观察者、KeyPath拼写错误等。文章还介绍了手动触发KVO的方法和替代方案。
2026-01-02 04:45:06
845
原创 ArkTS中的函数
本文介绍了ArkTS语言中函数的关键特性:1. 函数声明包含参数类型标注和返回值类型,支持可选参数、默认值和rest参数处理不定长输入;2. 函数作用域规则及变量覆盖机制;3. 支持函数类型定义回调,提供箭头函数简化语法;4. 闭包特性可保留局部变量状态;5. 通过函数重载支持多签名调用方式。文章通过代码示例详细说明了各种函数用法的语法规则和应用场景,涵盖基础函数声明、参数处理到高阶函数特性。
2025-11-13 01:12:38
141
原创 Swift中的泛型和关联类型的用法
这篇文章主要介绍下Swift中的关联类型和泛型。泛型编程的核心思想是:将类型参数化。你可以把类型(如IntString)当作一个参数传递给函数或类型。简单来说,关联类型是协议中的占位符类型。它在协议中声明"这里需要某个类型",但具体是什么类型,由遵循该协议的类型来决定。
2025-11-04 03:15:53
868
原创 iOS 开发中的 UIStackView 使用详解
《iOS开发中UIStackView使用详解》摘要: UIStackView是iOS9推出的高效布局容器,能自动排列子视图并简化AutoLayout约束。核心属性包括:axis(排列方向)、distribution(主轴分布方式)、alignment(交叉轴对齐)、spacing(间距)。支持动态增删子视图,通过嵌套可构建复杂界面,配合动画能实现流畅交互。典型应用场景如底部工具栏等线性布局。相比传统布局方式,UIStackView大幅减少约束代码,提升开发效率,是iOS界面布局的首选方案。
2025-08-26 12:05:45
1860
原创 深入解析鸿蒙 ArkTS 中的 @Local 装饰器
本文介绍了鸿蒙ArkTS开发中@Local装饰器的核心功能与使用方法。作为V2组件体系的状态管理工具,@Local主要用于声明组件内部私有状态,具有响应式更新、类型安全和生命周期兼容等优势。文章详细解析了@Local对基本类型、类对象、数组等不同数据类型的观测能力,并通过代码示例展示了实际应用场景。特别说明@Local从APIversion12开始支持,在元服务中也可使用,同时指出其对嵌套对象和类属性的观测限制。通过具体案例演示了如何利用@Local实现组件内部状态管理与UI自动刷新。
2025-08-22 14:16:29
1334
原创 深入探索鸿蒙开发中的 @ComponentV2 装饰器
本文介绍了鸿蒙ArkTS开发中的@ComponentV2装饰器,作为API12引入的新特性,它配合V2状态装饰器提供了更精细的状态管理和性能优化。文章通过计数器示例展示了基本用法,重点分析了其核心优势:1)支持@Local、@Param等装饰器实现精细化状态管理;2)通过冻结机制、属性级刷新等提升性能;3)简化生命周期管理。同时指出了使用限制,如不能混用V1装饰器、序列化限制等。建议新项目直接采用@ComponentV2,现有项目可分步骤迁移,包括替换装饰器和使用@ObservedV2处理嵌套对象等。
2025-08-22 11:54:34
805
原创 鸿蒙开发中的List组件详解
本文详细介绍了鸿蒙(HarmonyOS)开发中的List组件。作为常用UI组件,List用于展示垂直滚动列表数据,具有高性能渲染、大数据流畅滚动等特点。文章解析了List的核心属性(space、initialIndex等)和布局方式,对比了ForEach、LazyForEach创建ListItem的生命周期差异。通过示例代码展示了基础列表、自定义组件、分组列表等应用场景,并提供了滚动控制、懒加载等高级特性实现方法。最后给出了性能优化技巧和常见问题解决方案,帮助开发者高效构建列表界面。
2025-08-21 22:27:45
1429
原创 深入解析ArkUI状态管理:@ObservedV2与@Trace装饰器的类属性观测机制
本文深入探讨了HarmonyOS ArkUI V2中的状态管理装饰器@ObservedV2和@Trace。@ObservedV2提供类级别的响应式标记,自动跟踪所有属性变化并支持嵌套对象;@Trace则提供属性级别的精准控制,支持自定义变更处理和性能优化。文章详细介绍了二者的核心特性、典型用法及联合使用的最佳实践,包括嵌套对象深度观测、性能敏感场景优化等,并对比了V1版本的优势。最后提供了调试技巧和性能分析方法,帮助开发者高效构建响应式UI。
2025-08-21 05:31:54
1062
原创 鸿蒙开发中的 @State:轻松管理组件状态
本文介绍了鸿蒙ArkTS开发中@State装饰器的使用方法与特性。@State是用于标记组件内可响应状态变量的基础装饰器,当被修饰变量值变化时会自动触发UI刷新。文章详细说明了@State的基本用法(如计时器实现)、特点(数据驱动UI、局部性、响应式)和限制(必须初始化)。同时阐述了@State支持的数据类型(基础类型、class/Object、数组)及其响应机制差异,并提供了典型应用场景示例(按钮计数、开关状态切换等),帮助开发者理解和使用这一核心状态管理工具。
2025-08-21 02:47:13
875
原创 ArkUI中的@builder装饰器(一)
ArkUI中的@Builder装饰器提供了UI元素复用机制,支持私有和全局自定义构建函数,通过值传递和引用传递参数实现数据交互。该装饰器能够封装可复用UI结构,完整管理组件生命周期,适用于代码复用和基于View-State的UI刷新场景。使用时需注意参数传递规则和限制条件,如不允许修改参数值、引用传递单参数触发动态渲染等。典型应用包括封装重复UI组件和实现状态驱动的界面更新,能显著提升开发效率和代码可维护性。
2025-08-13 03:21:52
779
原创 ArkUI中的自定义组件(二)自定义组件的生命周期
本文介绍了ArkUI框架中自定义组件的生命周期和渲染流程。主要包含三个核心生命周期函数:aboutToAppear(组件创建时执行)、onDidBuild(首次渲染完成后执行)和aboutToDisappear(组件销毁前执行)。文章通过示例代码演示了这些函数的调用时机,并分析了嵌套组件时的执行顺序。同时详细说明了自定义组件的创建、重新渲染(状态变化触发局部更新)以及删除机制(涉及同步变量注销和垃圾回收)。最后提醒开发者避免在生命周期函数中进行异步操作或状态修改,以免影响UI稳定性。
2025-08-13 01:06:14
1449
原创 ArkUI中的Navigation全面解析:构建高效导航体系(一)
本文介绍了鸿蒙开发中自定义Navigation组件的关键功能。Navigation作为路由导航的根视图容器,支持单栏、分栏和自适应三种显示模式,可根据屏幕宽度自动切换布局。文章详细讲解了标题栏样式设置(Mini/Full/Free模式)、菜单栏和工具栏配置方法,以及基于NavPathStack的路由操作,包括页面跳转、返回、替换、删除等核心功能。此外还介绍了参数获取、路由拦截和单例跳转等高级特性,帮助开发者实现灵活的路由管理和页面复用。所有代码示例均在DevEco Studio 5.1.1上验证通过。
2025-08-12 02:59:44
1010
原创 ArkUI中的自定义组件(一)
ArkUI自定义组件生命周期详解:组件生命周期包括aboutToAppear(初始化)、onDidBuild(首次渲染完成)和aboutToDisappear(销毁前清理)三个核心阶段。其中aboutToAppear用于变量初始化,onDidBuild适合数据埋点等非UI操作,aboutToDisappear执行资源释放。注意避免在生命周期中修改状态变量导致UI异常,特别强调aboutToDisappear中不应使用异步操作以防止内存泄漏。组件更新时框架会智能进行最小化渲染,删除时同步变量会自动解绑。
2025-08-11 18:30:09
926
原创 鸿蒙ArkUI中的Button组件全面解析:从基础到高级应用
本文详细介绍了鸿蒙ArkUI框架中Button组件的开发与应用。主要内容包括:1)Button的三种创建方式及核心属性配置;2)样式定制方法,包括预定义样式和自定义样式;3)交互功能实现,如点击事件处理和状态管理;4)高级用法,如自定义内容、按钮组和动态效果;5)常见问题解决方案和性能优化建议;6)设计规范与组件组合技巧。通过系统讲解Button的各类特性和使用场景,为开发者提供了全面的开发指导,帮助构建美观、高效的交互界面。
2025-08-11 03:38:08
1332
原创 ArkUI中的布局组件之Flex布局
本文详细介绍了鸿蒙(HarmonyOS)应用开发中的Flex布局技术。主要内容包括:Flex布局的基本概念(主轴与交叉轴)、布局方向的设置(包括Ltr、Rtl、Auto三种方向)、布局换行方式(NoWrap、Wrap、WrapReverse)以及主轴对齐方式(Start、Center、End等)。同时详细解析了交叉轴对齐方式,包括容器组件设置和子元素设置两种方式,并介绍了自适应拉伸相关的三个重要属性:flexBasis、flexGrow和flexShrink。通过丰富的代码示例和图示,帮助开发者全面掌握这一
2025-08-11 00:50:27
727
原创 鸿蒙开发中的Tabs组件详解
本文介绍了鸿蒙(HarmonyOS)开发中的Tabs组件的使用方法和应用场景。Tabs组件可实现页面内容的分类切换,提升信息查找效率。文章详细讲解了三种导航模式(顶部、底部、侧边)的实现方式及代码示例,并介绍了scrollable、barModel等常用属性的设置方法。此外,还提供了自定义导航栏的实现方案,包括图标、文本样式等定制方法。最后强调了使用Tabs时的注意事项,如标签页数量一致性、性能优化等。该组件能有效提升应用的用户体验和空间利用率。
2025-08-09 22:49:53
1398
原创 ArkUI中的布局组件Row(一)
摘要:本文详细介绍了鸿蒙(HarmonyOS)ArkUI框架中的Row组件核心特性与使用场景。主要内容包括:1)基础布局属性:alignItems控制垂直对齐方式(顶部/居中/底部),justifyContent管理主轴排列,reverse实现子元素顺序反转;2)自适应布局方案:通过Blank组件、layoutWeight权重和百分比设置实现不同屏幕下的拉伸适配;3)延伸布局方案:结合List/Scroll组件处理内容溢出。文章包含完整代码示例,帮助开发者掌握Row组件在水平线性布局中的多种应用技巧。(14
2025-08-09 18:12:10
903
原创 ArkUI基础组件值Text组件详解
本文详细介绍了ArkUI框架中Text组件的功能与使用方法。Text组件是显示文本的基础控件,支持静态/动态文本内容、多样式设置和用户交互。核心属性包括文本内容(text)、字体大小(fontSize)、颜色(fontColor)、粗细(fontWeight)等样式控制,以及文本对齐(textAlign)、最大行数(maxLines)等布局属性。文章还讲解了文本事件处理、代码示例及最佳实践,如性能优化、多语言支持和样式复用等注意事项,帮助开发者高效使用Text组件构建用户界面。
2025-08-08 18:38:29
760
原创 Flutter兼容的iOS的最低版本号
摘要:本文介绍了如何确定和修改Flutter项目的最低iOS支持版本。主要方法包括:1)查看Flutter官方文档获取各版本对iOS的最低要求;2)通过flutter --version命令查看当前使用的Flutter版本;3)检查项目配置,包括ios/Podfile文件和Xcode中的Deployment Target设置。如需修改最低版本,可更新Podfile平台设置和Xcode项目配置后执行清理重建操作。建议较新的Flutter版本(3.x+)最低支持iOS 11.0,但推荐设置为iOS 13.0+以
2025-08-01 00:06:45
1289
2
原创 谈谈Flutter中的Key
Key是widget的唯一标识符,用于告诉 Flutter:“这个 widget 在 widget tree 中是谁”。在Flutter的渲染过程中,框架通过比较旧widget tree和新widget tree来决定哪些 widget 需要被重建、哪些可以复用,而这个“比较”的依据,就是key。
2025-07-30 03:07:05
1153
原创 Flutter中 Provider 的基础用法超详细讲解(二)之ChangeNotifierProvider
本文介绍了Flutter中ChangeNotifierProvider的核心用法。ChangeNotifierProvider用于管理状态对象并自动处理其生命周期,支持通过Consumer或API方式获取状态。文章详细讲解了多种状态获取方法的区别(Provider.of、context.watch、context.read等),并提供了多Provider组合使用、局部重建优化、状态共享等高级用法。通过示例代码展示了如何实现状态监听、事件处理和性能优化,帮助开发者更高效地使用Provider进行状态管理。
2025-07-27 23:26:16
981
原创 Flutter中 Provider 的基础用法超详细讲解(一)
简单来说,Provider 是基于 InheritedWidget 封装的一套状态管理工具。它的核心目标是 “提供数据并让子组件监听这些数据的变化”。相比直接使用 setState() 来更新页面,Provider 提供了更清晰、模块化的管理方式。
2025-07-21 13:10:42
5525
原创 Flutter状态管理篇之ValueNotifier(三)
本文深入解析Flutter中的ValueNotifier实现原理与使用场景。ValueNotifier作为轻量级状态管理工具,继承自ChangeNotifier并实现ValueListenable接口,专注于管理单一值状态变化。文章详细剖析其源码结构、继承机制和关键方法,包括值比较优化、通知触发等核心逻辑。通过与ChangeNotifier在功能、实现和使用场景等方面的对比,指出ValueNotifier适合简单状态管理(如计数器、开关状态),而ChangeNotifier更适用于复杂场景。文章还提供了基本
2025-07-19 04:31:31
1004
原创 Flutter状态管理篇之ChangeNotifier(二)
本文深入解析了Flutter中ChangeNotifier的实现原理。作为状态管理的基础类,ChangeNotifier通过数组维护监听器,采用2倍扩容策略优化性能。其核心方法包括添加/移除监听器、通知监听器(通过控制递归深度确保稳定性)以及dispose()生命周期管理。文章对比了ValueNotifier与ChangeNotifier的差异,并给出使用建议:简单场景用ValueNotifier,复杂状态继承ChangeNotifier。特别强调了使用后必须调用dispose()避免内存泄漏。该实现支持调
2025-07-19 02:22:18
1870
原创 Flutter状态管理篇之ChangeNotifier基础篇(一)
本文介绍了Flutter中的ChangeNotifier状态管理工具。ChangeNotifier是一个mixin类,通过管理监听者列表和调用notifyListeners()实现响应式UI更新。文章详细讲解了其基本用法,包括addListener/removeListener方法,并结合计数器示例展示如何定义状态类、创建StatefulWidget。还介绍了与Provider包结合的高级用法,比较了与ValueNotifier的区别,分析了适用场景和注意事项。ChangeNotifier适合管理复杂状态,
2025-07-17 21:54:53
1389
原创 Flutter生命周期函数全解析:你真的理解组件是怎么运行的吗
本文全面介绍了Flutter中的生命周期机制,重点分析了StatelessWidget和StatefulWidget的生命周期差异。StatefulWidget具有完整的生命周期流程,包括initState、build、didUpdateWidget、dispose等关键方法,文章通过代码示例演示了各阶段的触发时机和使用场景。此外还讲解了App级别的生命周期监听方法,说明如何通过WidgetsBindingObserver识别应用前后台状态变化。掌握这些生命周期机制对于正确处理数据加载、资源释放和状态管理至
2025-07-15 03:18:08
951
原创 Flutter 使用http库获取网络数据的方法(一)
本文介绍了在Flutter中使用http库进行网络请求的方法。首先需要添加http包依赖并配置Android网络权限,然后通过示例代码演示了如何发送GET请求获取图片列表数据。文章包含了完整的代码实现,展示了从发送请求到解析JSON数据,再到使用Image.network显示网络图片的全过程。最后提醒读者注意API响应速度可能较慢,并附上了效果图。该教程适合初学者快速掌握Flutter网络请求的基本操作。
2025-07-05 13:07:43
625
原创 记录一次有意思的面试过程(iOS网络相关)
这篇文章记录了一次iOS面试中关于网络请求类的设计问题。面试主要围绕如何使用Delegate设计网络请求类,在控制器中发起多个异步请求并追踪完成状态。作者首先提出使用DispatchGroup的解决方案,通过添加唯一标识符区分不同请求。随后探讨了如何优雅地判断请求来源,并讨论了面试官提出的不使用线程组实现同步请求的难题。文章展示了代码实现细节,同时坦承了对某些问题的困惑,邀请读者共同探讨更好的解决方案。
2025-06-30 14:07:43
658
2
移动+Swift(MVVM)+Swift+MVVM的实例代码(使用KVO实现)
2025-01-23
Flutter+Flutter+Getx+GetX中路由管理用法,跟博客一起的Demo
2024-10-31
Flutter+Getx+状态管理、路由管理、getx用法+用于展示Getx用法
2024-10-28
Flutter+Getx+状态管理、路由管理、getx用法+用于展示Getx用法
2024-10-28
移动端+OC/Auto Layout+自动布局 UIStackView+iOS UIStackView
2024-08-14
移动端国际化+flutter+Flutter getx+GetX实现国际化
2024-07-16
Flutter+getx+dart+使用getx实现鉴权
2024-07-19
数据结构+顺序表的C语言实现
2024-04-24
Flutter+Flutter GetX状态管理+GetX状态管理+Getx状态管理
2024-03-16
flutter+getx+getx路由管理+getx用法
2024-03-16
iOS framework打包实例demos
2023-07-31
flutter路由跳转和传值方式demo
2022-10-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅