藉助於OC語言特性,Bee將核心邏輯注入到NSObject基類中去,在使用Bee時,大多數狀況下能夠沒必要修改現有類繼承關係,這樣設計是把雙刃劍,也有可能與您現有方法名衝突。
在您代碼中任何位置均可以這樣作:
[self GET:@"http://www.qq.com/logo.png"];
[self POST:@"http://api.qq.com/" 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歷史列表
* 界面狀態:界面存活,數據,狀態
* 沙盒瀏覽:在線查看沙箱目錄中全部文件
* 異常模擬等功能
主要模塊
--------------------
* 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/
第三方庫引用
已知問題
--------------------
1. 內存泄露(正在解決)
2. 下拉刷新(沒寫完)
運行例程
--------------------
雙擊打開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]: http://www.whatsbug.com
[2]: http://itunes.apple.com/cn/app/qq-you-xi-da-ting/id443908613?mt=8
[3]: http://itunes.apple.com/cn/app/qq-kong-jian/id364183992?mt=8
[4]: http://bbs.whatsbug.comapi