iOS Masonry对包体积的影响

01

Masonry介绍

Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁。Masonry简化了NSLayoutConstraint的使用方式,让我们可以以链式的方式为我们的控件指定约束。

常用接口声明与实现:

使用方式:

02

对包体积的影响

可以看到Masonry的使用是以block为参数进行传递的,那如果项目中大量使用Masonry布局,那就会存在大量block,大家应该知道block实际上就是一个结构体,那这样就会增加代码量进而增加包体积,我们编写Demo进行测试:


Frame方式,将layoutWithFrame注释打开,编译运行,查看二进制文件大小,可以看到二进制文件大小为100K:


Masonry方式,将layoutWithMasonry注释打开,编译运行,查看二进制文件大小,二进制文件大小为103K:

可以看到二进制文件增加了3K,如果整个工程都用这Masonry这种方式的话那应该会增加几M,包体积就会增加几M。

03

改进方案

那如果还是想用Masonry进行布局,但是用不想使用block怎么办呢?修改Masonry的源码,如下:

使用方法:

经过测试这种方式和Masonry原始的使用方式相比,包体积增加不明显。还是用上面的Demo进行测试,将Masonry布局方式改为下面Demo,然后编译运行。

编译运行,查看二进制文件大小,二进制文件大小为101K:

相关推荐
2501_915909067 分钟前
如何在 Windows 上上架 iOS App,分析上架流程哪些是不用mac的
android·macos·ios·小程序·uni-app·iphone·webview
2501_915921431 小时前
分析 iOS 描述文件创建与管理中常见的问题
android·ios·小程序·https·uni-app·iphone·webview
专业开发者18 小时前
调试 iOS 蓝牙应用的新方法
物联网·macos·ios·cocoa
tangbin5830851 天前
iOS Swift 可选值(Optional)详解
前端·ios
卷心菜加农炮1 天前
基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署
ios
北极象2 天前
千问大模型接入示例
ios·iphone·qwen
ipad协议开发2 天前
企业微信 iPad 协议应用机器人开发
ios·企业微信·ipad
QuantumLeap丶3 天前
《Flutter全栈开发实战指南:从零到高级》- 26 -持续集成与部署
android·flutter·ios
2501_915918413 天前
TCP 抓包分析在复杂网络问题中的作用,从连接和数据流层面理解系统异常行为
网络·网络协议·tcp/ip·ios·小程序·uni-app·iphone
二流小码农3 天前
鸿蒙开发:个人开发者如何使用华为账号登录
android·ios·harmonyos