当前位置: 首页 > news >正文

iOS.FBTweak

FBTweak的源码分析

1. FBTweak提供了以下功能

A): 可以动态的修改某个变量的值,这些变量的类型包括: ...

B): 可以以plist的形式将Tweak以key-value的形式进行导出

 

2. FBTweak中的类

2.1 FBTweak 类

类FBTweak:代表唯一的命名的tweak(tweak: 微调)。

2.2 FBTweakValue 类

typedef id FBTweakValue;

代表一个Tweak的可能的值。

2.3 FBTweakObserver (@protocol)

FBTweakObserver: 代表Tweak的观察者。

2.4 FBTweakCategory 类

代表Tweak的类别,包含着不同的FBTweakCollection对象。 

2.5 FBTweakCollection 类 

代表Tweak的集合,包含着不同的Tweak对象。

2.6 FBTweakInline.h/m FBTweakInlineInternal.h

定义和实现对外暴露的Macro: 

FBTweakInline  FBTweakValue  FBTweakBind  FBTweakAction

2.7 FBTweakShakeWindow 类

当摇动设备时显示FBTweakViewController, 前提是App的RootWindow必须是该类的对象。

2.8 FBTweakStore 类

单例。存储FBTweakCategory对象

2.9 _FBTweakBindObserver 类

内部类。代表Tweak的观察者。

2.10 UI相关的类

FBTweakViewController

_FBTweakCategoryViewController

_FBTweakCollectionViewController

_FBTweakTableViewCell  (需要修改)

 

3. 从FBTweak Project中 学到点

参见 Todo 


 

Reference

1. Facebook Tweaks with Swift Tutorial

http://www.raywenderlich.com/80970/facebook-tweaks-swift-tutorial


 

TODO

1. OSAtomicTestAndSetBarrier()

2. Dl_info  dladdr()

usr/include目录下的的各种头文件的学习。

例如: mach-o/loader.h

3. _Generic

4. __attribute__((section (FBTweakSegmentName "," FBTweakSectionName)))

A) 关于__attribute__中section部分的一些了解

http://blog.csdn.net/sadshen/article/details/9419267

B) 性能优化,要懂点编译原理

http://laoar.net/blog/2014/06/24/ldscript/  (AAAA)

C) Attributes in Clang

http://clang.llvm.org/docs/AttributeReference.html

D)  

http://www.rowleydownload.co.uk/arm/documentation/index.htm?http://www.rowleydownload.co.uk/arm/documentation/ide_section_placement.htm

5. ld 

man ld

6. Code Block Evaluation C Extension

http://cocoa-dom.tumblr.com/post/56517731293/new-thing-i-do-in-code

http://nshipster.com/new-years-2014/

7. Default Values with GNU-style Ternary ?:

http://nshipster.com/new-years-2014/

转载于:https://www.cnblogs.com/cwgk/p/4386950.html

相关文章:

  • 数据结构-图
  • Linux 下完整安装ffmpeg(包括各种解码器)
  • poj2031
  • logistic regression
  • Linux中tty、pty、pts的概念区别
  • CISCO交换机QOS设置文档
  • QCon全球软件开发大会(北京站)2015精彩回顾和总结
  • MBA = married but available
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • Android中的Button自定义点击效果
  • 取得前一次MySQL操作所影响的记录行数
  • 计算圆的包含(两两圆不相交)
  • cacti安装文档
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • 抓虫记之七:模拟鼠标移动就报错
  • Android Volley源码解析
  • css布局,左右固定中间自适应实现
  • export和import的用法总结
  • JavaScript 一些 DOM 的知识点
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Mocha测试初探
  • PHP那些事儿
  • Python socket服务器端、客户端传送信息
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spring cloud gateway 源码解析(4)跨域问题处理
  • vue-router 实现分析
  • yii2权限控制rbac之rule详细讲解
  • 编写高质量JavaScript代码之并发
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 来,膜拜下android roadmap,强大的执行力
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 七牛云假注销小指南
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 用简单代码看卷积组块发展
  • - 转 Ext2.0 form使用实例
  • 走向全栈之MongoDB的使用
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • #FPGA(基础知识)
  • #微信小程序(布局、渲染层基础知识)
  • #预处理和函数的对比以及条件编译
  • $NOIp2018$劝退记
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (转载)Linux网络编程入门
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .net refrector
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net反混淆脱壳工具de4dot的使用
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @拔赤:Web前端开发十日谈
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)