Wrappres' Studio.

Wrappres' Studio.

Work Hard, Play Harder

AB 测试
A/B 测试 也叫桶测试或分流测试,指的是针对一个变量的两个版本A和B,来测试用户的不同反应,从而判断出哪个版本更有效,类似统计学领域使用的双样本假设测试。A/B测试是以数据驱动的可回退的灰度方案,客观,安全,风险小,是一种成熟的试错机制。 全景设计 策略服务,为策略定制者提供策略 A/B测试SDK,集成在客户端内,用来处理上层业务去走不同的策略 日志系统,负责反馈策略结果供分析人员分析不同策略执行的结果 A/B测试SDK生效机制分为冷启动生效和热启动生效。热启动落实策略要及时些,但考虑到一个策略可能关联到多个页面或者多个功能,冷启动可以保持策略整体一致性。 如果一个策略只在一个地方...
JSON相关
JSON相关JSON,是JavaScript Object Notation的缩写。 JSON基于两种结构: 名字/值对集合:这种结构在其他编程语言里被实现为对象,字典,Hash表,结构体或关联数组 有序值列表:这种结构在其他编程语言里被实现为数组,向量,列表或序列 解析JSON123let jsonData = jsonString.data(using: .utf8)!let decoder = JSONDecoder()let jsonModel = try! decoder.decode(H5Editor.self, from: jsonData) 1234567891011...
响应式框架的变迁
响应式框架的变迁MonadReactiveCocoas是采用号称纯函数式编程语言里的Monad设计模式搭建起来的,核心类RACStream。 12345678910111213141516171819typedef RACStream * (^RACStreamBindBlock)(id value, BOOL *stop);/// An abstract class representing any stream of values.////// This class represents a monad, upon which many stream-based operations...
Lottie
Lottie基本使用12345LOTAnimationView *animation = [LOTAnimationView animationNamed:@"Lottie"];[self.view addSubview:animation];[animation playWithCompletion:^(BOOL animationFinished) { // 动画完成后需要处理的事情}]; 动画与手势同步123CGPoint translation = [gesture getTranslationInView:self.view];CGFloat progre...
iOS中面向测试开发和面向行为驱动开发
iOS中面向测试开发和面向行为驱动开发从测试范围划分 软件测试可以分为单元测试,集成测试,系统测试。开发者负责单元测试,测试团队负责集成测试以及系统测试。 单元测试也叫模块测试,是对单一的功能代码进行测试,会使用Mock方法模拟外部使用,通过编写各种测试用例来检验代码的功能是否正常。 从开发模式划分 开发方式可以分为TDD(Test-driven development,面向测试驱动开发)和BDD(Behavior-Driven development,面向行为驱动开发)。 TDD:先编写测试用例,在不考虑代码优化的情况下快速编写功能实现代码,等功能开发完成后,在测试用例的保障下,在进...
iOS系统内核XNU
iOS系统内核XNUiOS系统架构基于ARM架构 用户体验层:主要提供用户界面。这一层包含了SpringBoard,Spotlight,Accessibility。 应用架构层:开发者会用到,包含了Cocoa Touch。 核心架构层:系统核心功能的框架层。包含了各种图形和媒体核心框架,Metal等。 Darwin层:操作系统的核心,属于操作系统的内核态。包含了系统内核XNU,驱动等 XNUXNU内部由Mach,BSD,驱动API IOKit组成,这些都依赖于libkern,libsa,Platform Expert。 MachMach作为UNIX内核的替代,主要解决UNIX一切...
应对富文本需求
应对富文本需求富文本是一段有属性的字符串,可以包含不同字体,不同字号,不同背景,不同颜色,不同字间距的文字,还可以设置段落,图文混排等等属性。 WebView12345678910111213self.wbView = [[UIWebView alloc] init];self.wbView.delegate = self;[self.view addSubview:self.wbView];[self.wbView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.right.bottom.e...
Runtime Method Swizzling
Runtime Method SwizzlingRuntime Method Swizzling 编程方式,也叫做AOP(Aspect-Oriented Programming,面向切面编程)。 AOP是一种编程范式,也可以说是一种编程思想,使用AOP可以解决OOP(Object Oriented Programming,面向对象编程)由于切面需求导致单一职责被破坏的问题。通过AOP可以不入侵OOP开发,非常方便地插入切面需求功能。 直接使用Runtime方法交换开发的风险12345678910111213141516171819202122#import "SMHook.h"#impo...
Flexbox布局
Flexbox 布局主要思想是,通过Flex容器设定的属性来改变内部Flex项目的宽,高,并调整flex项目的位置来填充flex容器的可用空间。 Texture 框架提供了一个基类ASLayoutSpec, 在这个基础类上提供了各种功能 12345678910ASAbsoluteLayoutSpec // 绝对布局ASBackgroundLayoutSpec // 背景布局ASInsetLayoutSpec // 边距布局ASOverlayLayoutSpec // 覆盖布局ASRatioLayoutSpec // 比例布局ASRelativeLayoutSpec // 顶点布局ASC...
avatar
Wrappers
rich and money