自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 iOS性能优化 - 分析&应用

APP 的性能指标主要是包括 CPU、GPU、内存、电池耗电、网络加载几个大的方面,网络加载在下文会提及,电池耗电主要是由于 CPU、GPU、网络等因素决定,所以不作为基础的指标。

2021-09-21 17:13:45 8713

原创 浅谈IOS工程架构

注册组件 A 的接口服务,在组件 B 中获取组件 A 的接口服务,再执行相应的能力。备注:在云端页面路由配置较多的情况下,频繁正则匹配会有一定的性能开销,native 与 web 页可以不采用云端下发的路由匹配机制,通过已注册的路由实现页面的生成与跳转(native 由 url-path 命中规则)。MVVM 的核心是解耦视图逻辑与业务逻辑,View-Model 的单/双向绑定不是 MVVM 的必要条件,View-Model 的单/双向绑定主要是简化了ViewModel 与 View 之间的数据交互。

2020-11-19 00:48:30 5151 2

原创 CocoaPods - podspec私有库配置

本文介绍了CocoaPods的配置和使用方法,包括Specs源地址(官方和镜像)、仓库管理、Podfile配置、Podspec文件编写等内容。重点讲解了Podspec文件的各项配置参数,如源码路径、依赖库、资源文件、架构设置等,并详细说明了如何创建私有库、校验podspec文件以及推送到远程仓库。此外还介绍了动态库/静态库声明方式、子模块配置等实用技巧,为iOS开发者提供了完整的CocoaPods使用指南。

2019-05-21 11:13:48 11967 2

原创 IOS内存管理

1. 栈区(stack):由编译器自动分配释放,函数的参数值,局部变量等值。2. 堆区(heap):一般由开发人员分配释放,若不释放,则可能会引起内存泄漏。Objective-C提供了两种种内存管理方式:(MRC,手动引用计数器),(ARC,自动引用计数)。ARC作为苹果新提供的技术,苹果推荐开发者使用ARC技术来管理内存;

2018-09-05 10:49:32 8438

原创 Flutter - UI布局

本文介绍了Flutter中常用的Widget分类及使用方式。主要内容包括:1)容器类Widget如Scaffold和Container的基础用法;2)布局类Widget包括Row、Column、Stack等排列方式;3)滚动类Widget实现列表和网格布局;4)内容类Widget处理文本和图片显示;5)手势类Widget添加交互功能;6)按钮类Widget的各种样式;7)显隐控制Widget实现动态界面效果。文章通过代码示例详细展示了各Widget的参数配置和典型应用场景,为Flutter界面开发提供了实用

2025-08-21 09:55:53 1499

原创 Flutter - 应用启动/路由管理

本文介绍了Flutter应用开发的核心流程。首先讲解了应用入口的初始化方法,包括Flutter绑定初始化和组件服务注册。其次详细说明了页面路由机制,包括命名路由配置、MaterialApp根组件的路由属性设置,以及页面间的参数传递方法。最后阐述了组件的两种形式:无状态组件(StatelessWidget)通过final属性实现不可变性,有状态组件(StatefulWidget)通过分离Widget和State对象实现状态管理。文中通过代码示例展示了如何实现路由跳转、参数传递和组件状态更新等核心功能。

2025-08-11 18:41:38 671 1

原创 Flutter Packge - 组件应用

本文介绍了Flutter组件开发流程:首先在packages目录创建纯Dart Package,配置pubspec.yaml添加依赖;然后在lib目录编写代码并导出组件,设置运行配置进行编译;最后在主工程中通过本地路径引用该组件,演示了网络请求的调用方法。整个过程包含组件创建、配置和引用三个主要步骤,适用于工具类和UI组件的开发。

2025-08-08 13:21:05 398

原创 Dart-语法基础

本文介绍了Dart语言的核心概念,包括变量声明(var、late、const、final)、基本数据类型(Number、Boolean、String等)和集合类型(List、Set、Map)。详细说明了流程控制语句(if、switch、for等)、操作符(三元运算符、可选链)和函数定义方式(位置参数、命名参数)。同时涵盖了类与对象的相关特性,如构造函数、继承、接口实现和静态成员。最后介绍了库的导入方式。内容全面覆盖了Dart的基础语法和面向对象编程特性。

2025-07-16 00:36:08 465

原创 HarmonyOS-消息推送

所有HarmonyOS 应用可通过集成 Push Kit,实现向应用实时推送消息,使消息易见,构筑良好的用户关系,提升用户的感知度和活跃度。1)在应用 entry 模块的 module.json5 中添加 metadata - client_id(client_id 在 AppGallery Connect - 我的项目中查看)。场景化消息类型包含IM(通知扩展消息场景)、VoIP(应用内通话消息场景)、BACKGROUND(后台消息场景)、EMERGENCY(紧急事件消息场景)。

2024-11-04 19:02:06 1425

原创 HarmonyOS-权限管理

system_grant 为系统授权,无需询问用户,常用的权限包括网络请求、获取网络信息、获取wifi信息、获取传感器数据等。

2024-11-01 18:41:19 3321

原创 Swift-语法基础

本文介绍了Swift编程语言的基础语法和核心概念,包括变量/常量声明、基本数据类型(Int、Float、Bool、String等)、集合类型(Array、Dictionary)、控制语句(if、guard、switch等)、运算符、函数定义、类和结构体的区别与用法。重点讲解了Swift特有的可选类型、可选链操作、协议扩展等特性,并通过代码示例展示了类继承、方法重写/重载、getter/setter等面向对象特性。文章还对比了值类型(struct)和引用类型(class)的差异,说明它们在内存管理和使用场景上

2024-08-01 00:32:19 992

原创 ArkTS-语法基础

以关键字 let 开头的声明引入变量,该变量在程序执行期间可以具有不同的值。常量声明以关键字 const 开头的声明引入只读常量,该常量只能被赋值一次。二、类型Number类型number 类型覆盖了任何整数和浮点数。Boolen类型boolean 类型由 true 和 false 两个逻辑值组成。String类型string 代表字符序列,可以使用转义字符来表示字符。Array类型array 类型是由可赋值给数组声明中指定的元素类型的数据组成。

2024-07-07 12:49:33 1673

原创 OC与Swift的相互调用

1、在 Build Settings 搜索 Packaging ,设置为 YES2、新建 LottieBridge.swift 文件,自动生成桥3、在 LottieBridge.swift 中,定义Swift类继承于OC类,声明或@objc,实现相关方法4、在OC代码中引用,调用Swift相关方法。

2023-07-31 19:31:49 8348

原创 SwiftUI-基础

遵守PreviewProvider协议,定义Previews结构体。Main函数与App结构体的绑定,遵循App协议。兼容UIApplicationDelegate。遵守View协议,定义View结构体。Swift 结构体与类的构造函数。

2023-07-25 18:49:24 2148

原创 基于OC端的Bridge-API组件化应用

在移动应用开发中,组件化可以提高代码的模块化和重用性,降低耦合度。当下大部分APP都至少包含一到两种Hybrid框架,H5基本是必要的,还可能叠加React Natvie、Weex或Flutter。对于Hybird来说,Native的很多能力是其不具备的,需要通过各自的来实现功能扩展,经过长时间的迭代后会产生大量的API。

2023-04-20 19:44:20 870

原创 基于CocoaPods的多Project工程应用

本文主要说明如何通过CocoaPods管理iOS项目依赖,并创建静态库框架。首先创建App项目,配置Podfile文件添加基础依赖库,执行pod install安装。然后创建Framework项目,修改构建类型为静态库,配置专属pod依赖并通过头文件暴露公共API。最后介绍如何构建发布版Framework包,并在主工程中正确引用和使用框架功能。全文涵盖了从依赖管理、模块创建到API调用的完整开发流程。

2023-03-29 18:53:58 1063

原创 如何在iOS应用中更好的调试H5页面

在APP中,H5页面可以通过加载vConsole脚本,来查看页面的日志、异常、网络加载、设备信息、储存信息、元素。但是,JS脚本加载于页面Dom挂载之后,这样就会使得这一区间的信息丢失,而且vConsole的Error也会有采集不到的情况。本篇先简单讲述WKWebView的加载流程,再通过Safari网页检查器,实现H5页面的调试与问题定位。

2022-03-23 18:32:38 9203

原创 xcode13环境下iOS15兼容问题汇总

一、调用canOpenURL的差异通过xcode13运行的APP,在iOS15系统上会限制info.plist的scheme白名单个数,前50个scheme有效,如果超出50个,调用canOpenURL会一直返回NO,无论你的手机是否安装该URL Scheme的应用。苹果官网对canOpenURL方法的调整做了说明,希望APP内减少对scheme的依赖,通过Universal Link的方式去实现应用跳转。/// 手机安装了美团APP,如果imeituan添加在列表的第49个,isInstal

2022-01-18 23:15:26 6478

原创 OC/C/JS-基础手册

本文摘要: iOS开发技术要点总结,涵盖OC构造函数/析构函数声明、Crash分析处理、内存管理、线程锁、图片处理、并发任务组合、自动布局、响应式编程等核心内容。重点包括:1)使用__attribute__属性实现模块自注册;2)通过符号化分析Crash日志;3)GCD队列选择与线程锁应用场景;4)Masonry自动布局最佳实践;5)RAC响应式编程实现数据绑定;6)C/JS语言基础特性。还涉及虚拟内存、文件操作、动态/静态库区别等底层原理,为iOS开发提供全面的技术参考。

2022-01-06 15:33:51 1193

原创 Mac指令备忘

本文摘要整理了iOS开发相关的技术要点,包括Git分支管理规范、提交信息格式、路径表示方法、Xcode版本设置、Ruby与Cocoapods升级步骤、ReactNative项目创建命令、应用安装异常处理、SSH密钥配置以及Bugly符号表工具使用方法。内容涵盖了从版本控制到环境配置的多个开发环节,为iOS开发者提供了实用的技术参考和操作指南。

2021-09-01 18:06:16 465

原创 基于SRWebSocket的WebSocket长连接

背景搭建稳定及轻量的长链接能力,应用于业务方的消息提醒、状态更新等即时任务,同时也方便web应用的快速接入。WebSocket是基于Http协议的,或者说借用了Http协议来完成一部分握手,在握手阶段与Http是相同的,握手成功后建立双向的socket通道。由于WebSocket的握手类似于Http协议,所以WebSocket的建联也支持常规的http配置,如请求头(包含cookie)、超时时长。...

2021-08-15 19:14:50 2289

原创 TCP粘包、拆包的场景与处理

1、发送端在每个包结尾处添加特殊字符,接收方根据此特殊字符接收相应的包数据。2、发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。3、发送端在包首部与包内容之间添加特殊字符,接收方先解析包头,获取包内容大小并接收包内容。/// 有数据-触发- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag;/// 读到相应长度的数

2021-07-02 16:35:31 593

原创 IOS审核常见问题汇总

APP信息与元数据不完整,或者是与APP实际内容不匹配,需要补充或更改APP信息与元数据。 审核元数据被拒,只需更新元数据并在解决方案中心回复审核人员,不需要重新打包提审。 APP没有接苹果IAP,审核期间不允许出现虚拟商品,或者金融属性的商品(信贷、借呗)。 方法命名存在歧义,或者是一些奇怪的命名,有可能被认为是隐藏性功能或者代码混淆(talkingData)。 APP预览图需要与APP内容呈现一致,能够清楚的呈现APP的用途,而且必须区分全面屏与非全面屏。 ..

2021-01-27 12:50:10 1610

原创 xcode12环境下iOS14兼容问题汇总

1、UIProgressView高度问题/* Xcode12-IOS14的兼容 */if (@available(iOS 14.0, *)) { CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 1.0f); transform = CGAffineTransformMakeScale(1.0f, 0.5f); _progressView.transform = transform;}2、获取I

2020-12-09 12:36:15 1790

原创 IOS WKWebView与Cookie问题梳理

解决方案2对比跳转URL与页面URL的host,如果为跨域且未做处理,拦截该跳转,重新配置request的cookie信息,再loadRequest一下。html资源加载一般是不会去判断登录态的,WKWebView在加载同域名的第一个html文件时,没有带cookie信息,所以直接在加载html的时重定向去判断登录态就会有问题。解决方案1对比跳转URL与页面URL的host,如果为跨域,通过WKUserScript在注入cookie信息(document.cookie)。...

2020-01-16 18:26:30 9078

原创 在现有iOS项目中集成Flutter

本文介绍了iOS项目中集成Flutter模块的详细步骤:首先在工程目录创建独立的Flutter模块,在Podfile中添加Flutter依赖配置;通过修改pubspec.yaml文件引入Flutter Boost等第三方库;执行Flutter构建命令后完成pod安装。第二部分阐述了页面展示的实现方案,iOS端使用FlutterEngineGroup创建多引擎页面,Flutter端则通过MaterialApp配置路由映射。全文详细说明了Flutter混合开发的工程配置和页面跳转实现方法,为iOS原生项目集成F

2019-12-26 22:41:18 1532

原创 APP-Log日志采集

JSAPI日志[模块] jsapi_action-- 方法名-- json:参数[h5-bridge] jsapi_handle--openUrl -- json:{url : http://www.baidu.com}[h5-bridge] jsapi_callback --openUrl -- json:{result : true}[weex-bridge] jsapi_handle-- openSysBrower -- json:{url : http://www.bai...

2019-11-18 17:13:19 1803

原创 iOS逆向-静态分析

本文介绍了iOS逆向分析中Mach-O文件的处理流程:1)使用Mac自带工具解压ipa获取Mach-O文件;2)通过MachOView分析文件结构,检查CryptID判断是否砸壳;3)利用class-dump获取头文件;4)使用Hopper进行反汇编分析;5)通过otool查看类结构;6)使用lipo和nm工具分析.a静态库的API信息。文章提供了各工具的具体使用说明和相关下载链接,涵盖了从ipa解包到静态分析的全套逆向工程技术要点。

2019-09-02 18:16:52 1201

原创 Flutter环境配置-macOS

本文详细介绍了在macOS系统上配置Flutter开发环境的完整流程。主要内容包括:系统要求(macOS10.14.4+)、FlutterSDK下载与解压、环境变量配置(PATH设置及国内镜像源)、AndroidStudio及必要插件的安装、设备环境配置(通过Homebrew安装相关工具)、环境检测(flutterdoctor命令使用)以及创建和运行Flutter项目的具体步骤(包括终端和AndroidStudio两种方式)。该指南适用于不同版本的macOS系统用户,提供了从环境搭建到项目运行的完整解决方案

2019-07-12 00:10:48 589

原创 define用法补充

1)字符串的常量用法。

2019-05-17 17:00:32 388

原创 Xcode编译报错 & 上传ipa异常

Xcode编译报错1)clang: error: linker command failed with exit code 1 (use -v to see invocation)​​​​​​​需要右键点击Reveal in Log才能查看具体的报错原因2) dyld: Library not loaded:dyld[15027]: Library not loaded: @rpath/HappyDNS.framework/HappyDNSTARGETS > Gener...

2019-05-15 17:20:22 1124

原创 CSS-基础

CSS属性padding:内边距; margin:外边距;padding | margin: top&bottom&left&right;padding | margin: top&bottom left&right;padding | margin: top right&left bottom;padding | marg...

2019-05-08 19:13:24 512

原创 Javascript-语法基础

GUI 渲染线程负责渲染浏览器界面,当界面需要重绘或由于某种操作引发回流时,该线程就会执行,但需要注意,GUI 渲染线程与 JavaScript 引擎是互斥的,当 JavaScript 引擎执行时 GUI 线程会被挂起,GUI 更新会被保存在一个队列中等到 JavaScript 引擎空闲时立即被执行。const 声明方式,除了具有 let 的上述特点外,其还具备一个特点,即 const 定义的变量,一旦定义后,就不能修改,即 const 声明的为常量。

2019-04-29 01:35:48 486

原创 Vue-基础

元素相关ifv-if="条件" => v-if="arr.length>0" v-else-if="条件" v-else<div class="a_class" v-if="arr.length>0"><div class="b_class" v-else-if="arr.length=0"><div class="c_...

2019-04-29 01:34:17 500

原创 通用链接-Universal Link

前言通用链接与URL Scheme的用途类似,主要是实现从外部唤醒App,并执行某些操作(如:打开指定页面)。由于使用URL Scheme(wechat://path?quary)从当前App唤醒自己的应用时,需要添加应用的URL Scheme到当前App的白名单中,限制该方法的灵活性,使用Universal link刚好可以解决这样的问题 (https://域名/path)。应用链接必须是https协议,且在webView打开链接时为跨域的方式(与当前域名不同),才会被作为通用链接唤起。

2019-04-24 19:56:22 6264 6

原创 TestFlight应用

一、内部测试与外部测试的区别内部测试只能添加100名成员不需要beta审核(beta审核:通过审核未发布上线),外部测试能添加10000名成员需要beta审核。二、内部测试构建1、在App Store Connect的App详情页中,选择TestFlight的栏目2、测试员和群组 > App Store Connect用户 > 测试员 > ⊕3、点击“用户和职能”添加测试员4、填写测试员信息,设置测试员的权限;邀请后apple ID邮箱会收到对应的邮件,

2019-04-24 17:14:43 8755

原创 HTML DOM 详解

目录DOM的简介...1DOM节点... 2DOM方法... 3DOM属性... 4DOM访问... 5DOM – 修改... 6DOM - 元素... 7DOM - 事件... 8DOM的简介HTML DOM 是:HTML 的标准对象模型 HTML 的标准编程接口 W3C 标准HTML DOM 定义了所有 HTML 元素的对象和属性,以及...

2019-04-22 16:43:41 1300

原创 IOS工程多环境配置

前言项目工程里总是会配置几个不同的环境,或是后台环境的各异,或是不同bundleID,每次都要去修改项目配置,不仅麻烦耗时,也不符合项目规范化管理。接下来说一下两个配置多环境的方法。目录利用Build Configuration来配置多环境 利用Targets来配置多环境 两者的对比一、利用Build Configuration来配置多环境1、首先复制一个现有的Configu...

2018-11-01 18:28:44 724

原创 GCD的简介及应用

iOS提供了三种多线程的调用,分别是NSThread、NSOperationQueue、及GCD,三者使用的轻重度依次是GCD、NSOperationQueue、NSThread,这里就不详细对比。GCD这要是采用C语言语法配合Block实现,可以实现同步、异步操作;运行并行、串行队列;同步锁,单例、延时等。

2018-09-05 13:06:22 1478

原创 Runloop应用详解

RunLoop 是 iOS 应用于线程中的一种循环机制。系统本身没有创建 RunLoop 的 API,不过可以通过 currentRunLoop 获取当前 RunLoop。主线程本身就存在一个 RunLoop,而且是运行转态,子线程的 RunLoop 需要手动开启,否知无法监听到输入源与定时源。子线程 RunLoop 随着所在子线程的事件源结束而关闭,随着所在子线程的结束而释放。

2018-09-04 16:45:03 1490

空空如也

空空如也

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

TA关注的人

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