Bee Framework

詳細信息

簡介

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)

工作

主要模組

* 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

相關詞條

熱門詞條

聯絡我們