- 博客(59)
- 资源 (3)
- 收藏
- 关注
原创 堆和栈的区别
频繁的分配和释放可能导致内存中出现大量不连续的空闲块(碎片),当碎片过多时,即使总空闲内存足够,也可能无法分配大块连续内存。原因:堆的内存地址是分散的(可能存在碎片),分配时需要内存管理器查找空闲块,访问时需通过指针间接定位,额外开销更大。原因:栈的内存地址是连续的,且分配时无需复杂的内存查找,编译器可通过栈指针直接定位数据(类似数组访问)。由于栈的分配和释放是连续的(严格遵循 LIFO),内存块不会被分割,释放后直接归还给系统,不会产生碎片。:进程内所有线程共享堆内存。:每个线程有独立的栈。
2025-07-31 15:16:20
670
原创 Flutter报错Flutter和Dart版本问题以及报错curl: (60) SSL certificate
以上无非是Flutter和Dart版本问题:根据项目情况从以下几种方式入手解决1)在pubspec.yaml理修改environment: sdk:版本范围 2)flutter upgrade 3)如果有安装多个版本的Flutter和SDK可在Setting->Languages & Frameworks 的Dart和Flutter分别选择合适的版本路径。
2025-07-30 06:00:00
424
原创 用了Flutter包体积增大就弃用Flutter吗?包体积与开发效率,这两者之间如何权衡?
原生开发需维护两套 UI 逻辑(Android 的 XML+iOS 的 Storyboard),易出现 “双端体验不一致”(如按钮样式、动画效果);是否因包体积增大而弃用 Flutter,本质上是 “短期成本(包体积)” 与 “长期价值(跨平台效率、体验一致性等)” 的权衡。这一决策没有绝对答案,需结合项目阶段、用户群体、业务需求等具体场景分析。:双端原生开发需持续同步功能(如新增一个支付页面,需 Android 和 iOS 各开发一次),而 Flutter 只需一次开发,长期迭代成本更低。
2025-07-28 23:38:53
685
原创 Flutter渲染引擎:Impeller和Skia
一、Impeller 渲染引擎的发布时间:2021 年 Google I/O 大会上首次提及,作为 Skia 的替代方案被提出,初期仅支持 iOS 平台。:2022 年随 Flutter 3.7 版本进入,可通过配置手动启用。:2023 年 Flutter 3.10 版本将其设为 iOS 平台的,彻底替代 Skia 在 iOS 上的地位;2024 年 Flutter 3.24 版本扩展至 Android 平台,实现跨平台统一渲染。
2025-07-28 17:00:33
1144
原创 RxSwift 核心解析
RxSwift 通过响应式编程范式解决了异步编程的复杂性问题,但引入了较高的学习成本和概念 “重量”,引入 RxSwift 会增加 App 包体积约 3-5MB(Release 模式),对体积敏感的项目有一定影响。其源码设计精巧,采用多种设计模式实现高度抽象和灵活组合,适合处理复杂数据流场景,但需谨慎使用以避免过度设计。
2025-07-22 19:39:34
910
原创 iOS组件化详解
组件化是大型 iOS 项目解决耦合、提升协作效率的核心方案,通过分层设计和 CTMediator 等中间件实现模块解耦;其与工程化(流程规范)、插件化(动态加载)定位不同,需根据项目规模和业务需求选择。
2025-07-22 17:01:03
963
原创 Provider 做 状态管理 和 路由管理 及 与其他方案对比
是 Flutter 官方推荐的状态管理解决方案,它基于实现,通过依赖注入的方式高效管理应用状态,避免深层嵌套传值问题。
2025-07-21 18:19:42
800
原创 Flutter 与 原生(Android/iOS)通信 Platform Channel
在Flutter中,Platform Channel是实现Flutter与原生平台(Android/iOS)通信的核心机制,其设计遵循轻量级异步通信原则,用于解决Flutter跨平台开发时与原生功能的交互需求。
2025-06-24 10:18:01
742
原创 GetX 实现 MVVM 架构, 高效 路由管理 和 状态管理
GetX是Flutter中的一个高效的状态管理与路由管理框架,结合MVVM架构能简化代码逻辑。通过GetX的GetxController和路由API,可轻松实现MVVM架构的状态管理与路由控制,同时保持代码的简洁性和可维护性。响应式机制:通过obs修饰符(int.obs、List<String>.obs等)使数据具备响应式,修改时自动刷新UI。return [User(1, '用户1'), User(2, '用户2')];• View:UI组件(Widget),通过GetX的响应式API绑定数据。
2025-06-22 18:29:35
956
原创 中级5 给应用添加通知和提醒 习题答案 <HarmonyOS第一课>
1. 发布普通文本类型通知,需要设置ContentType类型为ContentType.NOTIFICATION_CONTENT_NORMAL_TEXT。A. 发布进度类型通知,需要设置ContentType类型为ContentType.NOTIFICATION_CONTENT_PICTURE。B. 调用notificationManager.cancelall()取消所有已发布的通知。D. 调用notificationManager.cancel需要传入通知ID。A. 系统是否支持通知模板。
2024-11-07 12:51:09
576
原创 中级4 Web组件和WebView 习题答案 <HarmonyOS第一课>
A. fileAccess设置是否开启应用中文件系统的访问。$rawfile(filepath/filename)中rawfile路径的文件不受该属性影响而限制访问。1. Web组件提供具有网页显示能力,@ohos.web.webview提供web控制能力。B. @ohos.web.webview提供web控制能力,web组件提供网页显示的能力。2. 同一页面的多个Web组件,必须绑定不同的WebviewController。1. 下列关于Web组件的属性,描述错误的是?
2024-11-07 12:40:57
895
1
原创 跨平台Flutter 、ReactNative 开发原理
在build方法中,我们创建了一个MaterialApp,它是一个预制的应用程序widget,它提供了一个应用程序所需的标准结构,例如Scaffold(包括顶部的appBar和中心的body)。组件化开发:React Native 鼓励组件化开发,开发者可以将复杂的 UI 拆分为多个独立的组件,每个组件管理自己的状态,并通过组合这些组件来构建复杂的应用。当应用运行时,虚拟DOM会被转换为相应的平台编码,例如Android或iOS的本地控件,从而实现跨平台的效果2。JavaScript代码运行在。
2024-11-05 19:57:13
1189
原创 静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构
告诉CocoaPods不要生成静态库(.a文件),而是生成框架(.framework),Swift项目就能更容易地导入和使用这些库。这样做的好处之一是它允许你的Swift项目利用Swift的包管理特性,如更简单的依赖项导入和更好的模块兼容性。动态库被完全载入内存,是在代码里使用它的时候。运行调试闭源库 制作之后运行看效果和调试bug,总不可能每次都接入到要用SDK的工程吧,此时就需要专门的测试工程,可通过以下方式关联SDK和测试工程,Products文件夹下是编译后生成的SDK。
2024-11-05 13:53:43
1826
原创 高级5 应用DFX能力介绍 习题答案 < HarmonyOS第一课 >
C. HiTrace Meter跟踪,提供追踪进程轨迹,进行程序性能分析。D. HiTrace Chain调用链,提供业务流程调用链跟踪的维测接口。B. HiAppEvent应用事件,事件埋点接口,提供事件的埋点写入。C. 日志输出级别必须符合实际情况,禁止胡乱使用日志级别。A. HiLog日志,基础流水日志打印。A. 日志中禁止打印设备关键器件信息。B. 日志中可以打印用户个人隐私信息。正确(True)错误(False)正确(True)错误(False)错误(False) 回答正确。
2024-11-04 16:26:26
496
原创 中级3 合理使用动画和转场<HarmonyOS第一课>
1. 高级模板将属性动画和出现消失动画封装,开发者只需调用接口,可以轻松完成页面转场。A. 全屏模态转场 B. 半模态转场 C. 菜单弹出效果 D. 警告弹窗E. 气泡弹窗效果。A. 属性动画 B. 显式动画 C. 转场动画 D. 路径动画 E. 粒子动画。A. 只能基础组件B. 只能容器组件C. 基础组件和容器组件D. 以上都不对。A. 导航转场 B. 组件转场 C. 模态转场 D. 共享元素转场。2. HarmonyOS提供了哪些系统动画能力?正确(True) 错误(False)
2024-10-29 10:28:56
512
原创 中级2 ArkUI进阶 习题答案<HarmonyOS第一课>
C. 组件复用:提供可复用组件对象的缓存资源池,通过重复使用已经创建过并缓存的组件对象,降低相同组件短时间内频繁创建和销毁的开销,提升组件渲染效率。B. 缓存列表项:提供屏幕可视区域外列表项长度的自定义调节能力,配合懒加载设置可缓存列表项参数,通过预加载数据提升列表滑动体验。B. 当列表滑动新的ListItem将要被显示,List组件树上需要新建节点时,将会从复用缓存中查找可复用的组件节点。A. 标记为@Reusable的组件从组件树上被移除时,组件和其对应的JSView对象都会被放入复用缓存中。
2024-10-29 10:16:00
705
原创 中级1 应用程序框架进阶 HarmonyOS第一课
B. 可以在创建的Want中设置想要启动的UIAbility组件的能力字段,如“entities”。C. 使用Want 启动UIAbility组件有显示Want启动和隐式Want启动两种形式。C. 想要在启动浏览器类型应用内时默认打开网页,可以在创建的Want中设置“uri”字段。D. 在module.json5配置文件中,“skills”表示应用组件支持的能力。A. 系统每次启动UIAbility组件,都会创建一个新的该类型实例。2. UIAbility组件多实例启动模式是默认的启动模式。
2024-10-28 16:02:46
735
原创 初级8 保存应用数据 习题答案<HarmonyOS第一课>
A. 使用getPreferencesSync()获取用户首选项实例,然后使用putSync()方法保存数据到缓存的Preferences实例中,再使用flush()持久化数据。C. 使用getSync()获取用户首选项实例,然后使用getPreferencesSync()方法保存数据到缓存的Preferences实例中,再使用flush()持久化数据。1. 应用存入数据到Preferences实例后,可以使用flush()方法实现数据持久化,用户首选项的数据持久化后是放在哪里?
2024-10-28 15:54:54
833
原创 Mac touchbar 触控条不显示、触控条不能点击交互,先别急着送修,试试这样操作~
在终端中输入命令:sudo pkill TouchBarServer,回车,会提示输入电脑密码,输入密码后回车。如果还是不行,关机重启的过程中按住Command-Option-P-R(二、MacBook touchbar 显示但不能触摸交互。一、MacBook touchbar 触控条不显示。找到名为 TouchBarServer 的进程,但是此时,触控条虽然显示,但是不能点击交互。此时观察触控条,它应该会恢复。此时观察触控条,它应该会恢复。)直到听到第二次电脑启动声为止。然后选择退出或强制退出。
2024-10-26 11:19:54
5511
原创 初级7 从网络获取数据 HarmonyOS第一课
1. 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用:正确(True) 错误(False)2. 使用on(type: 'headersReceive')订阅响应头事件后,不需要监听时也不必取消订阅。正确(True) 错误(False)3. 当HTTP请求使用完毕时,需调用destroy方法主动销毁HttpRequest对象:正确(True) 错误(False)
2024-10-25 15:26:08
1068
原创 初级6 构建更加丰富的页面 习题答案<HarmonyOS第一课>
A. 设置BarPosition参数为BarPosition.End,vertical属性保持默认设置或设置为falseB. 设置BarPosition参数为BarPosition.Start,vertical属性保持默认设置或设置为falseC. 设置BarPosition参数为BarPosition.End,同时设置vertical属性为trueD. 设置BarPosition参数为BarPosition.Start,同时设置vertical属性为true。
2024-10-25 13:49:28
986
原创 初级5 从简单的页面开始<HarmonyOS第一课>
2. 对于包含文本元素的组件,如:Text、Span、Button、TextInput等,使用fontFamily设置字体时,参数类型只能是string,当使用多个字体时,用“,”进行分割,按顺序生效。3. 在Column容器中的子组件默认是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向,在Row容器中的组件默认是按照从左到右的水平方向布局的,其主轴的方向是水平方向。它适用于呈现同类数据类型或数据类型集。B. itemGenerator为子组件生成函数,为数组中的每个元素创建对应的组件。
2024-10-24 18:32:34
966
原创 初级4 应用程序框架基础 习题答案<HarmonyOS第一课>
1. 在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。正确(True) 错误(False)2. 一个应用只可以包含一个UIAbility组件。正确(True) 错误(False)3. Background状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。正确(True) 错误(False)
2024-10-24 16:51:05
563
原创 初级3 ArkTS语法介绍 习题答案 <HarmonyOS第一课>
1. ArkTS中使用const声明常量。正确(True)错误(False)2. 允许在容器组件内使用if/else条件渲染语句构建不同的子组件。正确(True)错误(False)3. @Entry装饰的自定义组件将作为UI页面的入口。在单个UI页面中可以使用多个@Entry装饰不同自定义组件。正确(True)错误(False)1. 下面属于ArkTS中正确使用变量声明的语句是?
2024-10-23 18:52:42
933
原创 初级2 DevEco Studio的使用 习题答案<HarmonyOS第一课>
A. build-profile.json5用于存放应用级配置信息,包括签名、产品配置等B. oh-package.json5用于配置三方包声明文件的入口及包名C. module.json5包含HAP的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息D. app.json5用于编写应用级编译构建任务本。B. 在预览器界面,可以在预览器中操作应用/服务的界面交互动作,如单击、跳转、滑动等,与应用/服务运行在真机设备上的界面交互体验一致。D. 页面预览通过在工程的ets文件头部添加注解@Entry。
2024-10-23 13:26:47
1014
原创 初级1 HarmonyOS介绍 第一课习题答案
1. “一次开发,多端部署”指的是一个工程,一次开发上架,多端按需部署。为了实现这一目的,HarmonyOS提供了多端开发环境,多端开发能力以及多端分发机制。正确(True)错误(False)正确(True)回答正确2. 《鸿蒙生态应用开发白皮书》全面阐释了鸿蒙生态下应用开发核心理念、关键能力以及创新体验,旨在帮助开发者快速、准确、全面的了解鸿蒙开发套件给开发者提供的能力全景和未来的愿景。正确(True)错误(False)
2024-10-23 09:42:58
1359
原创 Android基础Adapter适配器详解
一定要以数据库作为数据源的时候,才能使用SimpleCursorAdapter,且特别需要注意:必须在AndroidManifest.xml文件中加入权限(注意项目里AndroidManifest.xml文件名可能不是这个,可能是attrs_manifest.xml但是)在显示列表上加按钮:写一个有按钮的xml,首先会想到定义一个适配器,然后将数据映射到布局文件上。c.数据 具体的将被映射的字符串,图片,或者基本组件。
2024-02-20 18:26:16
724
原创 1.29 SwiftUI学习笔记及报错问题记录
1.FormA container for grouping controls used for data entry, such as in settings or inspectors.对用于数据输入的控件(如设置或检查器)进行分组的容器用法:var body: some View { Form { Section(header: Text("Notifications")) { Picker("Notify Me
2022-01-29 18:12:09
2034
原创 2022.1.4 Android导入compose的 Maven 组遇到的问题
1)Unresolved reference: compose 提示Add ‘jcip.annocations.jar’ to path按提示add后会import net.jcip.annotations.Immutable 这时@Immutable不报错了 但是import androidx.compose.runtime.Immutable依然报错2)Google搜索import androidx.compose.runtime会指向官方提示库导入文档 https://developer.an
2022-01-04 18:27:56
4106
原创 12.16 Android常见标签 UI控件
1.android:supportsRtl="true”指支持从右向左布局support right-to-left (RTL) layouts 是API17即Android4.2以后才有,之前是不支持该属性。当设置-开发人员选项-强制使用从右到左的布局方向就能看到效果。2.xmlns是xml namespace的缩写,C++中的namespace和Java中的packagename,是为了解决(如类名、接口名等)命名冲突。因为xml中标签不是预定义,所以会遇到命名冲突问题,而HTML中是预定义
2021-12-17 18:12:46
2836
原创 12.15 写Android UI组件遇到问题
1.imeOptions :android键盘中的enter键图标是可以用EditText的android:imeOptions标签变更android:ems = "10" : 设置TextView或者Edittext编辑的字符串长度为10,超出部分不显示,该属性只有android:layout_width=“wrap_content”时才显示,是march_parent时不会有变化android:layout_alignParentBottom="true"2.遇到问题:1)androi.
2021-12-15 19:39:37
5557
原创 12.14 Layout Inspector、颜色设置、xml不同文件类型区别、drawable不同文件名含义区别、常见UI控件
1.Tools > Layout Inspector1.1. 左Component Tree:布局中视图的层次结构。1.2 中 Layout Display:按照应用布局在设备或模拟器上的显示效果呈现布局,并显示每个视图的布局边界。1.3. 中上 布局检查器工具栏:布局检查器的工具。1.4. 右 Attributes:所选视图的布局属性。 1.5.选择视图: 在Component Tree或Layout Display中点击则选中视图,所选视图的所有布局属性都会显示在...
2021-12-14 19:11:39
1936
原创 12.7Android的Debug
12.71.Run模式和Debug模式是区分开的; Run、Debug、Run……with coverage1)选择Debug模式下,代码左边断点 红色小圆点2)在左下角的Debugger 调试 step over / step into单步调试或F8 / force step into 所有方法看完整/ step out/ drop frame / run to cursor3)当前程序运行位置的值 单步执行到哪一步,右边黄色代码会显示出来4)logcat是EventLog吗?...
2021-12-14 09:31:39
699
原创 12.13 XML布局 和 LiveData
1.xml布局Java代码调用方法控制UI 缺点:繁琐不易解耦;xml布局便捷但有失灵活xml文件编译时,都需要通过main函数中onCreate来调用,用法如下项目里 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ……}博客里@Override protected void onCreate(Bundle savedInsta...
2021-12-14 09:29:19
1234
原创 building for iOS Simulator, but linking in object file built for iOS, file for architecture arm64
一、问题app在真机能运行,在模拟器不能正常编译,出现报错二、原因字面看是模拟器状态下找不到对应的arm64架构文件,实质是M1芯片的兼容性问题PS:用M1芯片电脑 很多时候会遇到兼容性问题,当常规方案解决不了问题,试着搜索的时候带上关键字M1或许能更快找到答案三、过程网上搜索了很多无非就是需要该配置文件,但是亲测实际只需要2步四、解决方案具体如下2步:4.1 、podfile文件末尾添加以下脚本:然后执行pod install 命令。post_install do |
2021-09-26 23:20:34
6414
2
原创 iOS15新特性、iOS15适配
一、iOS15新特性1.1、iOS15兼容的设备iPhone6S以上,包括SE第一/二代,iPod touch第七代具体6s、6sPlus、7、7Plus、8、8plus、X、XR、XsMax、Xs、11、11Pro、11ProMax、12、12Pro、12ProMax、12mini、13、13Pro、13ProMax、13mini1.2、iOS15新特性专注模式,就是确保用户在一个时间段里屏蔽各种骚扰、非必要的内容不看不听,来提升做其他事情的效率。苹果做了各种细致分类,能进行量身定制。
2021-09-26 16:35:47
3943
1
原创 iOS设置非系统自定义字体- 原生app自定义字体和H5自定义字体
一、App更改自定义字体按照常规方法更改即可(1).将字体文件放入工程(2).在info.plist中增加Fonts provided by application 数组类型,并将添加的字体文件添加(3).找到字体文件对应的具体的我们要用的字体名字let fontFamilies = UIFont.familyNamesfor fontFamily in fontFamilies { let fontNames = UIFont.fontNames(forFamilyName: fo..
2021-05-16 22:27:35
1482
原创 H5与iOS混编 之WKWebView与UIWebView用法区别
一、WebViewView比UIWebView的优点1.WK是iOS8以上推出,目前都是建议用WK2.WK将UIWebViewDelegate和UIWebView封装成了14个类和3个协议3.支持更多的H5特性4.高达60FPS的滚动刷帧率和内置手势5.性能、稳定性、功能都更好,加载网页占内存更少(比如模拟器加载百度占内存23M,只有UIWebView的1/4左右)6.允许JS的Nitro加载并使用二、UIWebView实现交互的方法和原理UIWebView实现H5与iOS混
2021-04-19 09:39:45
488
原创 Flutter执行flutter pub get过程中遇到的问题
一、执行命令路径有问题提示错误:找不到pubspec.yaml文件应该在Flutter项目的根目录下 而不是git clone或Flutter的解决方案:cd flutter项目目录 再执行命令二、电脑配置的Flutter SDK 版本过低提示问题:当前电脑配置的版本是1.7.8+hotfix.4.而项目需要的是大于等于1.12.0小于2.0.0解决方案:flutter upgrade三、Upgrading Flutter卡住不动问题:执行flutter upgrad
2021-03-28 21:10:16
4357
1
J2ME手机开发入门源代码
2010-12-31
Java2宝典(Java2 Bible)[美]Aaron Walsh Justin Couch Daniel H.Steinberg著
2010-10-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人