自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

原创 Flutter 语聊房项目 ----- 礼物特效播放

本文介绍了一种语聊房项目中礼物特效播放的抽象设计方案。通过定义通用的GiftEffect抽象基类,实现不同类型礼物特效的统一接口。系统采用工厂模式创建特效实例,并设计了特效管理器处理播放队列和优先级逻辑。资源管理方面实现了预加载和缓存机制,同时使用Isolate避免阻塞UI线程。该架构支持基础动画、全屏特效和3D特效等多种礼物类型,具有良好的扩展性,实现了特效播放与UI层的解耦,能够有效处理复杂礼物特效的播放需求。

2025-09-12 02:00:47 663

原创 Flutter 中的 Isolate

Dart中的Isolate是独立的并发执行单元,通过消息传递实现通信。Isolate拥有自己的内存空间和线程,不会共享内存,从根本上避免了数据竞争问题。主Isolate可以创建新Isolate来处理CPU密集型任务,保证UI线程不卡顿。

2025-09-11 23:56:52 993

原创 Dart 中的 Event Loop(事件循环)

Dart的事件循环机制是单线程异步编程的核心,通过微任务队列和事件队列实现任务调度。同步代码优先执行,随后清空微任务队列(如scheduleMicrotask和Future回调),最后处理事件队列(如I/O、Timer)。

2025-09-10 23:56:06 799

原创 Flutter多线程

特性Isolate核心事件循环,单线程多线程,真正的并行内存共享内存不共享内存,通过消息传递数据开销开销极小开销较大(每个 Isolate 约 >100KB 内存)通信简单,直接通过变量复杂,必须通过传递消息适用场景I/O 密集型任务(网络、文件、数据库)CPU 密集型任务(大量计算、图像处理)代码示例。

2025-09-10 22:46:16 1273

原创 iOS原生开发和Flutter开发的看法

应用设计严格遵循iOS的HIG(人机交互指南),大量使用原生组件(如SafariViewController、地图Callout),希望应用看起来“就是iOS应用”。需要频繁调用iOS最新的、尚未被Flutter插件封装的底层API或硬件特性(如ARKit、Core NFC、HealthKit等)。应用有大量品牌自定义的设计(如复杂的动画、非标准的控件),Flutter的自绘引擎能轻松实现且保证双端一致性。最优秀的工程师,懂得如何根据项目的目标、团队的状态和资源的限制,在这两者之间做出最明智的架构决策。

2025-09-09 23:58:32 1206

原创 Flutter 性能优化

​​​​​​​:永远依靠性能分析工具来定位问题,而不是靠猜。const:尽可能多地使用constWidget。:长列表务必使用builder系列构造函数。build()方法里只做构建 Widget 这一件事。:选择适合你项目复杂度的状态管理方案,避免全局setState。:图片是内存杀手,务必处理好尺寸和缓存。:在真实的低端设备上进行性能测试,模拟器或高端设备往往无法暴露问题。:最终的性能评判和发布一定要在 Release 模式下进行。

2025-09-08 00:13:16 1836

原创 关键字 const

Flutter利用Dart语言的const特性优化性能。const创建编译时常量,具有唯一性和不可变性。在Flutter中,const能显著提升Widget重建效率:减少内存分配、避免GC压力、加快界面比对速度。通过将常用Widget标记为const,可复用实例而非重复创建,这对频繁重建的Flutter界面尤为重要。Flutter框架能识别相同const实例,直接跳过子树比对,大幅提升渲染性能。

2025-09-07 22:08:34 793

原创 重建 (Rebuild)、重布局 (Relayout)、重绘 (Repaint)

Flutter性能优化核心在于理解三个关键概念:重建、重布局和重绘。重建是执行build()方法生成新Widget树,开销最小;重布局是重新计算RenderObject的大小和位置,性能消耗最大;重绘仅更新视觉外观,开销中等。优化建议:合理使用setState,避免不必要的重布局,运用RepaintBoundary隔离重绘区域,使用const构造函数减少Widget实例创建。这三个操作层级递进,理解其区别有助于精准优化渲染性能。

2025-09-07 00:23:09 1079

原创 生命周期方法:didUpdateWidget

Flutter中的didUpdateWidget是State类的重要生命周期方法,用于在Widget更新时处理状态和资源管理。该方法在父组件重建时被调用,允许State对象保留并响应新Widget的配置变化。核心原理涉及Flutter三棵树(Widget、Element、RenderObject)的协调机制,通过Widget.canUpdate()判断是否重用State。典型应用场景包括:响应配置变化、管理订阅/监听器、优化性能避免重复计算、处理资源清理和动画过渡等。

2025-09-06 19:39:17 1262

原创 命令式 UI 和 声明式 UI

命令式UI与声明式UI是两种不同的界面开发范式。命令式UI(如UIKit)需要开发者编写详细指令逐步构建和更新界面,直接操作组件实例,适合精细控制但代码量大。声明式UI(如SwiftUI)则只需描述界面状态,由框架自动处理更新,代码更简洁高效。两者主要区别在于:命令式关注"如何做",需手动管理状态和更新;声明式关注"做什么",状态变化自动触发界面刷新。

2025-09-05 19:26:30 1405

原创 Flutter的三棵树

树角色特点职责Widget 树蓝图/配置轻量、不可变描述UI元素应该是什么样子Element 树粘合剂/管理者可变、长寿命管理Widget的更新,决定是复用还是重建UIRenderObject 树渲染工人重量级、持久负责实际的布局、绘制工作,计算尺寸和位置,渲染到屏幕简单记忆Widget 是配置,Element 是管家,RenderObject 是干活的。管家(Element)根据新的图纸(Widget)来决定是让工人(RenderObject)在原基础上修改,还是直接换一个新工人。

2025-09-05 18:59:07 1048 1

原创 编程范式:提升抽象能力的思维工具

编程范式是编写程序的基本方法论,主要分为命令式(关注"如何做")和声明式(关注"做什么")两大类。命令式包括过程式编程和面向对象编程,强调步骤和对象交互;声明式包含函数式和逻辑式编程,注重结果描述和逻辑推导。不同范式各具优势:过程式直观但复用性差,面向对象适合复杂系统但可能过度设计,函数式简洁但学习门槛高,逻辑式适合专家系统但应用领域窄。现代开发通常混合使用多种范式,根据具体需求选择最合适的编程方法。掌握多种范式能提升编程灵活性和问题解决能力。

2025-09-05 18:36:56 666

原创 认识 Flutter

Flutter是Google推出的跨平台UI开发框架,支持移动端、Web和桌面端应用开发。其优势包括:高性能渲染(直接调用GPU加速)、热重载开发体验、统一代码多端运行。相比传统WebView方案和React Native,Flutter通过自带渲染引擎(Android用Skia,iOS用Metal)实现更接近原生的性能,避免了桥接损耗和系统版本限制。特别是能保持不同平台、不同系统版本下一致的UI表现和性能,同时支持Material和Cupertino两种设计风格。

2025-09-05 17:37:00 879

原创 Widget 生命周期

Flutter的Widget生命周期分为StatelessWidget和StatefulWidget两类,StatefulWidget通过状态管理实现动态UI更新,而StatelessWidget则用于静态展示。

2025-09-04 16:34:09 1215

原创 InheritedWidget

摘要: InheritedWidget是Flutter中用于沿Widget树高效共享数据的特殊组件,解决了逐层传递数据的繁琐问题。它通过建立依赖关系,让子组件能直接访问上层数据。当InheritedWidget数据变化时,依赖它的组件会触发didChangeDependencies生命周期方法,实现状态更新。理解InheritedWidget机制是掌握Flutter状态管理的基础,现代库(如Provider)封装了其逻辑,但核心原理仍基于此。

2025-09-04 15:44:12 1056

原创 图片的本质

本篇主要认识下图片的本质

2022-08-18 12:18:29 753

原创 OpenGL ES /Metal滤镜处理

滤镜原理

2022-08-18 11:49:40 382

原创 iOS字体适配方法总结

iOS动态适配字体

2022-08-10 18:35:55 1365

原创 iOS15 API 新特性

iOS15系统遇到的问题总结

2022-08-09 15:25:47 517

原创 【项目篇】性能优化

性能优化

2022-07-16 20:49:05 139

原创 “宏”在开发中的使用

宏在开发中的使用

2022-07-08 18:53:54 867

原创 iOS直播短视频类APP上架4.3多次终上岸的惨痛经历

笔者接手公司从外包买来的代码,工程量很大(涵盖短视频,直播,动态),又是上架社交类,被拒4.3多次,2.3.1都经历过,最终上架成功!!!经历惨痛,在此记录下经验,避免后者踩坑!!!

2022-04-02 11:37:53 759 2

原创 iOS审核上架【万能指南】

iOS上架指南,被拒4.3,被拒2.3.1大礼包

2022-03-28 16:34:13 1317 2

原创 iOS加载网页【全解】

WKWebView 全解基本使用 & 实际项目中遇到的问题目录:WKWebView 全解前言一、WKWebView的基本使用1.引入库2.读入数据二、实际项目中遇到的问1.WKWebView网页缓存刷新问题总结前言例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、WKWebView的基本使用示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。1.引入库代码如下(示例)

2022-03-25 14:41:34 9624 1

原创 如何设置Launch Image启动图片

首先,了解一下各设备和分辨率的大小尺寸 设备 分辨率 Retain 5.5 iPhone Plus 1242*2208 Retain 4.7 iPhone6 750*1334 Retain 4.0 iPhone5S、 iPhone5 640*1136 Retain 3.5 iPhone4s 640*960 3.5...

2016-02-16 15:52:38 651

转载 收集的一些学习ios的好网站(2)

原文:11 Insanely Great iOS Developers Sites本文为CocoaChina翻译,转载请注明。永不止步地向他人学习我相信,要想从一个"还不错"的人变成一个卓越的人,我们需要不停地向他人学习,同时还得尽早地适应最新的技术和工具。除了苹果官方文档网站之外,我列举了一些能获取有价值的文章和资源的网站,这些网站能够帮助我们更上一个

2016-01-29 13:58:22 445

转载 iOS不断旋转的UIBarButtonItem

做一个不断旋转的View简单,但是怎样让UIBarButtonItem旋转起来呢。一、先说一下需求:1.做一个RightBarButtonItem不断旋转的Demo;2.点击RightBarButtonItem 按钮旋转或暂停;三、关键代码展示(已加注释)://// ViewController.m// Navig

2016-01-29 13:49:47 1438

转载 iOS 整体框架类图

Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。1、Cocoa是什么?Cocoa是OS X和 iOS操作系统的程序的运行环境。是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发中你可以使用各种语言;也不是开发工具,你可以在命令行上就可以创建Cocoa程序。Cocoa程序可以这么说,它是由一些对象组成,而这些对象的

2016-01-28 17:29:27 435

原创 iOS---Foundation(NSDecimalNumber.h)

一、简介在iOS中需要精确计算时,double, float类型往往会出现不可预料的问题:在调试过程中可以看到 doule 类型 d3在计算过程中值不是预计的9999.99。如果在要用中计算涉及到金额等重要数据,不建议使用这种不可控结果的方式,可以采用iOS提供的另外一种支持准确精度计算的数据类型 NSDecimalNumber.NSDeci

2016-01-28 16:45:39 1010

转载 iOS---Foundation(NSURLCache.h)简介

//http://www.cnblogs.com/wendingding/p/3950198.html一、关于同一个URL的多次请求  有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的。    上面的情况会造成以下问题(1)用户流量的浪费(2)程序响应速度不够快解决上面的问

2016-01-26 17:14:52 430

原创 iOS沙盒机制

iOS沙盒机制:     iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。     1、每个应用程序都有自己的存储空间     2、应用程序不能翻过自己的围墙去访问别的存储空间的内容     3、应用程序请求的数据都要通过权限检测,假如

2016-01-26 15:24:28 441

原创 iOS-CoreGraphics(CGAffineTransform.h)

一、简介     CGAffineTransform实际上是一个矩阵,称仿射变换矩阵。     transform是view的一个重要属性,它在矩阵层面上改变view的显示状态,能实现view的缩放、旋转、平移等功能。transform是CGAffineTransform类型的。使用transform后view的frame被真实改变的。              

2016-01-25 10:38:35 612

原创 iOS画虚线

//画虚线    CAShapeLayer *shapeLayer = [CAShapeLayerlayer];    shapeLayer.frame=CGRectMake(15,300,290,0.5);    [shapeLayer setFillColor:[[UIColorclearColor]CGColor]];    // 设置虚线颜色为b

2016-01-06 16:21:41 457

原创 iOS-QuartzCore(CAAnimation.h--解读)

CoreAnimation - CAAnimation.h#import <QuartzCore/CALayer.h>#import <Foundation/NSObject.h>@class NSArray,NSString,CAMediaTimingFunction,CAValueFunction;NS_ASSUME_NONNULL_B...

2015-12-23 08:41:51 1672

原创 iOS系统键盘样式

1.UIKeyboardTypeAlphabet2.UIKeyboardTypeDecimalPad3.UIKeyboardTypeEmailAddress4.UIKeyboardTypeNamePhonePad5.UIKeyboardTypeTwitter6.UIKeyboardTypeWebSearch7.UIKeyboardTy

2015-12-19 13:42:55 687

原创 UITextView 点return 隐藏键盘

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{    if ([text isEqualToString:@"\n"]) {        [self.mainTextViewresignFirs

2015-12-18 10:33:05 337

原创 iOS-UIKit( UIBezierPath.h - -应用举例)

一、设置矩形视图的某个角或某几个角为圆角 UIView*view=[[UIViewalloc]initWithFrame:CGRectMake(100,100,80,30)];    view.backgroundColor=[UIColorblackColor];    [self.viewaddSubview:view];    UIBezierPath *

2015-12-18 09:35:48 394

原创 设置父视图的透明度与子视图的关系

一。设置父视图的透明度不影响子视图baseView.backgroundColor = [[color6_0getColor]colorWithAlphaComponent:0.5];其中baseView为父视图效果:(父视图颜色:[[UIColor redColor] colorWithAlphaComponent:0.5];        子视图颜色:[UIColo

2015-12-18 09:19:52 639

原创 iOS-动画(iOS中的动画简介)

参考自http://www.cnblogs.com/wendingding/p/3801036.html,     http://my.oschina.net/aofe/blog/270412,    在此表示感谢。iOS中的动画:     1.核心动画:Core Animation     2.UIView动画     3.UIImageV

2015-12-11 09:13:21 1333

原创 iOS-UIKit(UIScrollView.h - -解读)

UIScrollView.h#import #import #import #import #import NS_ASSUME_NONNULL_BEGINtypedef NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) {    UIScrol

2015-12-10 17:20:43 601

年月日时分秒选择器

可以同时选择年月日时分秒的时间选择器

2016-02-24

年月日时分秒PickView

时间选择器,可以选择年月日时分秒UIPickView

2016-02-24

空空如也

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

TA关注的人

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