Bee Framework_百度百科

Bee Framework
编辑
 
 

1详细信息

简介

Bee Framework是一款iOS快速开发框架,目前活跃于github开源社区,于2012年底被收入到OSChina最受欢迎开发欢迎名单,目前国内多 家移动互联网公司正在开发使用。其早期原型曾经被应用在 [QQ游戏大厅 for iPhone][2]、[QQ空间 for iPhone][3] 等多款精品APP中。 在最近几个月中,作者梳理并重构了设计,并取名为Bee,寓意着“清晰,灵活,高效,纯粹”。

特性

代码注入
  
借助于OC语言特性,Bee将核心逻辑注入到NSObject基类中去,在使用Bee时,大多数情况下可以不必修改现有类继承关系,这样设计是把双刃剑,也有可能与您现有方法名冲突。
  在您代码中任何位置都可以这样做:
  [self GET:@h t t p :/ / w w w.qq.c o m/logo.png];
  [self POST:@"h t t p : / / api.qq.c o m /" data:[NSData data]];
  [self postNotification:@"SOME_NOTIFICATION"];
  [self sendMessage:@"SOME_MESSAGE" timeoutSeconds:10.0f];
  [self sendUISignal:@"SOME_SIGNAL"];
基于MVC模型
典型的MVC架构,清楚的分为View、Controller、Model三个层次,业务数据、业务逻辑、界面展现、交互逻辑完全分离。
事件驱动
对 于Controller、Model均与状态无关(Stateless),因此由三种Event驱动:Message、Request、 Notification。对于View,我们抛弃掉了老旧的Delegate(语言级实现方式),引入新概念UISignal(框架级实现方式)用来驱 动界面交互事件或状态改变。
UISignal
  
UISignal 拥有极强的路由能力,可以在UIView <-> UIView <-> UIViewController <-> UINavigationController <-> UIViewController 之间完成复杂且高效的的UI信号路由。
  那么,我们来看一个关于UISignal的实际运行的例子:
[signal.BeeUIImageView.LOAD_COMPLETED] > // 信号发送
  BeeUIImageView > // 信号发给了自己
  DribbbleCell > // 二传给superview
  UITableViewCellContentView > // 三传给contentView
  BeeUITableViewCell > // 四传给UITableViewCell
  UITableView > // 五传给UITableView
  BeeUIBoardView > // 六传给UIViewController.view
  DribbbleBoard // 七传给UIViewController
实际上,我只写了一行代码⋯⋯
  [self sendUISignal:BeeUIImageView.LOAD_COMPLETED];
哪里发送哪里接收
尽可能允许您将UISignal、Message、Request、Notification相关处理逻辑内嵌到物理位置上相同的代码中,型成整体,方便维护及并行开发。
  典型的例子是一个APP界面即收发网络请求,又处理控制器相关消息,同时又处理子控件发来的信号。不用担心,这些代码优美而秩序的展现在您面前。
基于状态的新UIBoard
基于State,重新定义了UIViewController的实现方式,统一称为UIBoard,同样的,UINavigationController统一称为UIStack。
  开发者只需关注UIBoard状态变化时该做什么事,以及子级控件的UISignal该怎样处理。
内置Debugger
  
不依赖于XCode instrument,Bee自身提供了App内调试工具。
  您可以随时观察APP运行状态,诸如:
  * 网络请求:请求详情,成功失败率,网速限制(模拟3G、2G),开网断网
  * 内存占用:内存剩余,模拟分配,模拟内存警告
  * 事件处理:Notification、Message历史列表
  * 界面状态:界面存活,数据,状态
  * 沙盒浏览:在线查看沙箱目录中所有文件
  * 异常模拟等功能
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot1.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot2.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot3.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot4.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot5.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot6.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot7.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot8.png)
![Debugger](h t t p : / /blog.whatsbug.c o m /wp-content/uploads/2012/08/screenshot9.png)

2工作

主要模块

* External
  外部信赖库
  * ASI: 网络通讯库
  * JSONKit: JSON解析引擎
  * Reachability: 网络接入点检测
  * Foundation
  基础模块,及NSObject扩展
  * Cache
  * JSON based
  * File cache
  * Memory cache
  * Log
  * NSLog wrapper
  * VAR_DUMP
  * Network
  * GET/POST
  * File upload
  * Black list
  * Performance
  * Runtime
  * Object allocation
  * Callstack
  * Sandbox
  * Singleton
  * SystemInfo
  * UDID
  * System version
  * Jailbreak detection
  * Thread
  * Block based
  * MVC
  * Controller
  * Message
  * Action mapping/routing
  * Model
  * View
  * UIView
  * Touchable
  * UISignal
  * UIActionSheet
  * UIActivityIndicator
  * UIAlertView
  * UIButton
  * UIColor
  * UIDatePicker
  * UIFont
  * UIGridCell
  * UIImageView
  * 支持网络异步加载
  * UIKeyboard
  * UILabel
  * UIOrientation
  * 方向变化通知
  * 角度变化通知
  * UIProgressView
  * UIPullLoader
  * UIRect
  * 拉伸
  * 位移
  * UISegmentedControl
  * UITabBar
  * UITextView
  * UIWebView
  * UIZoomView
  * ViewController
  * UIBoard
  * UIStack
  * UIStackGroup
  * UITableBoard
  * UIFlowBoard

编译要求

Mac OS X 10.6, Xcode 4

运行要求

iOS 4.0 或更新版本

目录结构

* BeeDebugger/
  内置调试工具
  * BeeFramework/
  框架源代码主目录
  * Core/: 核心模块
  * Extension/: 基础类扩展
  * View/: 基础视图控件
  * ViewController/: 基础视图控制器
  * Example/
  相关教程及示例代码
  * Documention/
  相关文档
  * External/
  第三方库引用

运行例程

双击打开Example/WhatsBug.xcodeproj,编译并运行。

安装步骤

1. 将BeeFramework目录完整复制到项目目录中去。
  2. 添加BeeFramework到工程目录
  3. 添加相关Framework:
  a. libz.dlib
  b. CFNetwork.framework
  c. CoreGraphics.framework
  d. Foundation.framework
  e. MobileCoreServies.framework (ASI)
  f. QuartzCore.framework
  g. Security.framework (MD5)
  h. SystemConfiguration.framework (Reachibility)
  i. UIKit.framework
  4. 在工程的.pch预编译头中加入:
a. \#import “Bee.h”
  b. \#define __BEE_TESTING__ (1) // 是否启用开发模式
  c. \#define __BEE_LOG__ (1) // 是否打印LOG
  d. \#define __BEE_DEBUGGER__ (1) // 是否开启Debug
  5. 编译运行
  6. Good luck[1]

Bee Framework_百度百科的更多相关文章

  1. python爬虫—爬取百度百科数据

    爬虫框架:开发平台 centos6.7 根据慕课网爬虫教程编写代码 片区百度百科url,标题,内容 分为4个模块:html_downloader.py 下载器 html_outputer.py 爬取数 ...

  2. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  3. Python3爬取百度百科(配合PHP)

    用PHP写了一个网页,可以获取百度百科词条.源代码已分享至github:https://github.com/1049451037/xiaobaike/tree/master 那么通过Python来爬 ...

  4. redis百度百科和维基百科知识总结:

    1. 百度百科知识总结: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis ...

  5. Apache Mesos_百度百科

    Apache Mesos_百度百科 Apache Mesos

  6. JEFF BANKS_百度百科

    JEFF BANKS_百度百科 JEFF BANKS

  7. RCMTM _百度百科

    RCMTM _百度百科 RCMTM

  8. c31 rotc_百度百科

    c31 rotc_百度百科 c31 rotc

  9. bda_百度百科

    bda_百度百科 bda

随机推荐

  1. 高级UNIX环境编程5 标准IO库

    标准IO库都围绕流进进行的 <stdio.h><wchar.h> memccpy 一般用汇编写的 ftell/fseek/ftello/fseeko/fgetpos/fsetp ...

  2. Cygwin ssh

    http://www.evalumation.com/blog/86-cygwin-windows7-sshd

  3. Python开源异步并发框架

    Python开源异步并发框架的未来 2014年3月30日,由全球最大的中文IT社区CSDN主办的“开源技术大会·” (Open Source Technology Conference ,简称OSTC ...

  4. C# 计算器 运算符和数字键的keys对照

    keys. private void Computer_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.NumPad0) ...

  5. Unity的Cover flow的实现包(2个)

    苹果的mac机上预览图片,有一个所谓的cover flow的效果,这里收集到两个,两个实现效果略有不同. 1.老外的实现 https://github.com/rakkarage/Unity3D-Co ...

  6. BZOJ 1977: [BeiJing2010组队]次小生成树 Tree( MST + 树链剖分 + RMQ )

    做一次MST, 枚举不在最小生成树上的每一条边(u,v), 然后加上这条边, 删掉(u,v)上的最大边(或严格次大边), 更新答案. 树链剖分然后ST维护最大值和严格次大值..倍增也是可以的... - ...

  7. ZOJ 3204 Connect them MST-Kruscal

    这道题目麻烦在输出的时候需要按照字典序输出,不过写了 Compare 函数还是比较简单的 因为是裸的 Kruscal ,所以就直接上代码了- Source Code : //#pragma comme ...

  8. linux下find命令-atime,-ctime,-mtime真正含义

    linux下的-atime,-ctime,-mtime含义我们经常会在论坛或者群里面被问到,在linux或者unix下如何查看某文件的创建日期?经常又会有人说用find命令加选项-ctime,其实这里 ...

  9. Oracle 专用模式(DEDICATED) 和 共享模式(SHARE) (转)

    Oracle 是一门博大精深的技术.玩了2年的oracle,依旧还有很多知识点不清楚. 昨天群里的朋友提到了 DEDICATED 和 SHARE 两种模式. 不清楚,默默的做点功课了.从网上搜了点知识 ...

  10. 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

      设计模式 ( 十九 ) 模板方法模式Template method(类行为型) 1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行 ...