根据表10-1所述,基于同一工作空间静态链接库实现的分层可以有WLOOO和WLSOO模式,下面简要介绍一下WLSOO模式。 10.5.1 使用工作空间 工作空间是多个工程的集合,我们可以把3个不同的层放置在不同的工程中,然后再把这3个工程放置到一个工作空间中。打开本节案例代码MyNotesWorkspace文件夹,再打开MyNotesWorkspace.xcworkspace文件,(.xcworkspace文件是工作空间文件),如图10-16所示。 图10-16 Xcode工作空间 它们之间的依赖关系是:BusinessLogicLayer依赖于PersistenceLayer,PresentationLayer依赖于BusinessLogic Layer和PersistenceLayer,因此创建顺序应该是PresentationLayer→BusinessLogicLayer→PersistenceLayer。 10.5.2 添加数据持久层工程 数据持久层工程PersistenceLayer是静态链接库工程。找到本书提供的PersistenceLayer(位于MyNotes Workspace的 PersistenceLayer目录下),添加静态链接库的过程是:在Xcode导航面板的右键菜单中选择Add File to “MyNotesWorkspace”...,接着在弹出的对话框中选择PersistenceLayer.xcodeproj文件,然后就可以将工程添加到工作空间了。 静态链接库提供给使用者的文件是.a文件和.h文件,前者是编译之后的静态链接库文件,后者是要调用对象的头文件。 .h文件在编译时会复制到产品发布目录下,具体设置如下:打开PersistenceLayer工程,选择TARGETS→PersistenceLayer→Build Phases,然后再选择Editor→Add Build Phase→Add Headers Build Phase菜单项即可。此时会打开复制头文件窗口,选择图10-17中的+按钮,从弹出界面中选择要复制的头文件,再点击Add按钮即可添加。 接着用鼠标将复制的头文件从Project栏拖曳至Public栏中,如图10-18所示。Public栏中.h文件可以被其他工程访问,在应用编译的时候可以复制到产品发布目录。 图10-17 选择要复制的头文件 图10-18 拖曳复制的头文件到Public栏中 10.5.3 建立业务逻辑层与数据持久层的依赖关系 BusinessLogicLayer工程也是静态链接工程,其创建过程和复制头文件等设定都与PersistenceLayer工程类似,不同的是BusinessLogicLayer依赖于PersistenceLayer。打开BusinessLogicLayer工程,选择TARGETS→ BusinessLogicLayer→Build Phases→Link Binary With Libraries,如图10-19所示,点击左下角的+按钮,然后从弹出界面中选择libPersistenceLayer.a,再点击Add按钮,这样依赖关系就添加好了。 图10-19 添加依赖关系 此外,还要添加头文件搜索设置,具体操作方法是:打开BusinessLogicLayer工程,选择TARGETS→ BusinessLogicLayer→Build Settings→Search Paths→User Header Search Paths,如图10-20所示,在弹出的对话框中,添加$(BUILT_PRODUCTS_DIR),并选择recursive,其中$(BUILT_PRODUCTS_DIR)是宏,表示产品发布目录,recursive表示递归添加目录路径。 图10-20 添加头文件搜索设置 设置完成后,可以编译一下BusinessLogicLayer工程,具体步骤是,如图10-21所示,选择运行的模拟器,然后通过快捷键command+B,或通过Product→Build菜单项进行编译。 图10-21 编译静态链接库工程 10.5.4 建立表示层与业务逻辑层的依赖关系 PresentationLayer不是静态链接工程,需要与BusinessLogicLayer和PersistenceLayer建立依赖关系,具体的操作方法可参考BusinessLogicLayer工程。添加头文件搜索设置的具体方法,也可以参考BusinessLogicLayer工程。完成后的工作空间如图10-16所示。 由于表示层用Swift实现,业务逻辑层用Objective-C实现,所以Swift调用Objective-C时,需要添加桥接头文件Presentation- Layer-Bridging-Header.h,该文件的内容如下: #import "Note.h" #import "NoteDAO.h" #import "NoteBL.h" 具体的配置过程,可以参考10.4.3节。 注意 如果BusinessLogicLayer和PersistenceLayer工程中有内容要修改,因为不会自动编译,需要先选择菜单项Product→Clean清除一下再编译。但是,有时候会报出找不到一些头文件的编译错误,这种情况下请多次执行清除操作再编译。
iOS开发指南 从零基础到App Store上架(第3版)——10.5 基于同一工作空间静态链接库实现的WLSOO模式
书名: iOS开发指南 从零基础到App Store上架(第3版)
作者: 关东升
出版社: 人民邮电出版社
出版年: 2015-4-1
页数: 658
定价: CNY 99.00
装帧: 平装
ISBN: 9787115387769