BMCommons 框架是由 Werner Altewischer 为 Behind Media 开发的,用于开发 iOS 应用的框架。它是一个通用框架,由多个子模块组成。
模块
BMCore
这是一个包含核心功能、可用于 MacOSX 和 iOS 应用程序的模块。它包含
- 大量辅助类,如 BMApplicationHelper、BMErrorHelper、BMSecurityHelper、BMEncodingHelper、BMEncryptionHelper、BMErrorHelper、BMStringHelper、BMDateHelper 等;
- 对 Foundation 类的扩展,如 BMTwoWayDictionary 和 BMOrderedDictionary;
- 对 Foundation 类的分类,如 NSString(BMCommons)、NSDateFormatter(BMCommons)、NSNumber(BMCommons)、NSData(Encryption)、NSData(Compression)、NSArray(BMCommons) 等;
- 带有 BMHTTPRequest、BMURLCache 和 BMAsyncDataLoader 等类别的流式网络库;
- 通过 BMProxy 和 BMImmutableProxy 支持代理;
- BMService 框架的核心类,如 BMServiceManager、BMAbstractService、BMHTTPService 和 BMCompositeService;
- 基本输入流类,如 BMAbstractInputStream、BMBufferedInputStream、BMURLConnectionInputStream 和 BMHTTPMultiPartBodyInputStream;
- 通过 BMCache 和 BMURLCache 缓存;
- 通过 BMOperationQueue 扩展 NSOperationQueue 进行多线程;
- 通过 BMLocalization 扩展了基本本地化支持,允许在应用程序中更改区域设置;
- BMApplicationContext 类作为单例对象的注册表和应用程序的初始化点。
- BMSettingsRegistry、BMSettingsObject 和 BMAbstractSettingsObject 用于管理应用程序设置。
BMUICore
这是一个依赖于 BMCore 的 iOS 应用程序核心功能模块,它包含
- 如 BMViewController、BMTableViewController 和 BMNavigationController 等基本 UIViewController 类,提供拖动刷新、拖动加载更多和自定义推送动画等功能;
- 如 BMServiceModelTableViewController 和 BMEntityServiceModelTableViewController 等使用 BMService 框架异步加载模型的 UIViewController 类;
- 如 BMImageHelper、BMDialogHelper 和 BMDeviceHelper 等辅助类;
- 如 BMTableViewCell 和 BMObjectPropertyTableViewCell 等基本 UITableViewCell 类;
- 通过 BMAsyncImageLoader 支持异步图像加载;
- 如 BMTextField、BMAnimatedImageView、BMAsyncLoadingImageButton、BMDraggableButton 和 BMBarButtonItem 等基本 UIView/UIControl 类;
- 通过 BMStyleSheet 支持视图控制器样式表;
- 通过 BMBusyView 支持加载指示器;
- 对 UIWebView(BMCommons)、UIView(BMCommons)、UINavigationBar(BMCommons) 等常见类别的分类支持;
- 实现常见应用程序代理方法并添加通过 BMServiceManager 绑定到 BMService 调用的加载指示器支持的 BMAppDelegate 基类。
BMUIExtensions
包含自定义UIView、UIViewControllers和相关类的模块
- BMPagedView:用于分页视图(如iOS主屏幕功能),API与UITableView类似。
- BMWebDialog:用于HTML基于的对话框/警报
- BMValidatingTextField:具有验证支持的UITextField
- 各种BMTableViewCell类,例如:BMDatePickerCell、BMImageViewCell、BMSliderCell、BMTextViewCell、BMTextFieldCell、BMSwitchCell、BMTimePickerCeell、BMValuePickerCell。
- BMAlphabeticListTableViewController:类似于联系应用的表格视图(带搜索栏和字母索引)。
- BMMultiSwitchViewController:一个容器视图控制器,用于在不同视图控制器之间切换,带自定义动画。
- BMInfoWebViewController:用于显示基于Web的信息。
- 值选择视图控制器,例如:BMMultiSelectionViewController、BMDateSelectionViewController、BMEnumeratedValueSelectionViewController、BMTimeSelectionViewController。
- BMMailComposeController:用于实例化电子邮件订阅视图控制器。
以下是所有类的完整列表,以及它们用途的简要描述。
此模块依赖于BMUICore。
BMXML
包含用于与XML文档交互的类(如:BMXMLDocument、BMXMLElement、BMXMLNode、BMXMLReader、BMXMLReaderSAX和BMXPathQuery)的模块
BMRestKit
包含用于以流式方式解析XML或JSON数据的完整框架,以及将数据映射到对象的框架。它还支持使用XSD或WSDL作为源自动生成REST/SOAP Web服务的客户端类,并对所使用的传输透明(无论是XML还是JSON)。模块包含以下功能
- BMParser:包含BMJSONParser和BMXMLParser的实现,用于流式SAX样式解析JSON或XML数据。
- BMParserHandler:用于SAX样式解析数据的基础类。
- BMObjectMappingParserHandler:将数据映射到BMMappableObject实现类的类。
- BMObjectMappingParserService:用于解析XML/JSON数据(多线程)并将其映射到BMMappableObject实例的BMService实现。
- BMMappableObjectGenerator:从XSD或WSDL生成预配置的BMMappable对象实例的生成器。
- BMMappableObjectXMLSerializer和BMMappableObjectJSONSerializer:将对象在XML或JSON之间转换。
以下是所有类的完整列表,以及它们用途的简要描述。
此模块依赖于BMCore和BMXML。此外,它还依赖
BMCoreData
包含用于使用CoreData作为持久存储的辅助类模块
- BMCoreDataStack:NSManagedObjectContext和NSManagedObjectModel的中心注册表,它了解多线程代码。它还支持自动版本迁移。
- BMCoreDataOperation:用于在后台执行CoreData操作的NSOperation。
- BMCoreDataModelDescriptor、BMCoreDataStoreDescriptor和BMCoreDataStoreCollectionDescriptor:用于管理和迁移复杂的CoreData模型/存储文件层次结构的描述符。
- BMCoreDataErrorHelper:许多常见操作的帮助方法,如获取请求、遍历对象图等。
- BMFetchedResultsTableViewController:表示核心数据实体为单元格的表格视图控制器的基类。
以下是所有类的完整列表,以及它们用途的简要描述。
此模块依赖于BMCore和BMUICore。
API版本
请注意,并非所有API都可以被认为是最终的,可能会发生变化。这就是为什么BMCommons框架仍然处于0.x版本区域。这并不是说软件是不稳定的,并已被作者应用于已上架的许多生产应用。
就API和文档而言,最成熟的子模块是BMCore、BMXML和BMRestKit。
示例
要运行示例项目,首先克隆仓库,然后从示例目录中运行pod install
。
需求
安装
BMCommons可以通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile中
pod "BMCommons/<sub module>"
其中子模块是以下之一
- BMCore
- BMUICore
- BMXML
- BMRestKit
- BMCoreData
- BMUIExtensions
作者
Werner Altewischer
许可
BMCommons受MIT许可协议保护。有关更多信息,请参阅LICENSE文件。