转载请注明出处:http://blog.csdn.net/number_five/article/details/46561089
动态库学习流程:
1.创建
1.1动态共享库创建:
1.2接口准备(有xib和无xib)
2.打开
2.1主程序的创建:
2.2打开方式:
2.3调用入口接口:
3.数据共享方式
3.1本地存储:
3.2消息中心
在苹果的WWDC2014上开放了动态库, 用动态库来更新程序是一个很好的选择 ,也很有意思 , 让我们来学习一下动态库吧 .
准备: Xcode 6 以上
1.1 动态共享库的创建
打开xcode 创建一个Cocoa Touch Framework ,如图1.1所示
图1.1 创建Cocoa Touch Framework
我创建的名字叫LinkPhone ,如图1.2 所示
图1.2 创建LinkPhone
然而我划横线的类并没有什么卵用, 对, 然并卵 , 可以删掉也可以不删, 随意了, 我删掉了.
然后创建一个继承与NSObject类的类 , 我叫Interface ,作为接口类,如图1.3 创建Interface
图1.3 创建Interface接口类
然后点击工程-->Target-->Build Phases-->Headers 将Projict里面我们要暴露出来的作为接口使用的头文件拖到Public下, 这样主程序就能访问到该头文件,如图1.4所示
图1.4 暴露接口
然后点击 “ +” 号按钮 , 创建Aggregate的target ,如图1.5
图1.5 创建共享库
名字叫做LinkPhone1 , 然后再Target-->LinkPhone1-->Build Phases -->Target Dependencies 点击“+” 把真正的动态库添加进去如图1.6所示
图1.6
然后在LinkPhone1-->Build phases 下点击加号,添加Script Phase 如图1.7所示
图1.7
然后在LinkPhone1-->Build Phases-->Run Script 下的黑色区域, 填写脚本代码
如图1.8所示
图1.8
脚本内容为:
#Sets the target folders and the final framework product.
FMK_NAME=${PROJECT_NAME}
#Install dir will be the final output to the framework.
#The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
#Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
#-configuration ${CONFIGURATION}
#Clean and Building both architectures.
xcodebuild-configuration "Release" -target "${FMK_NAME}" -sdkiphoneos clean build
xcodebuild-configuration "Release" -target "${FMK_NAME}" -sdkiphonesimulator clean build
#Cleaning the oldest.
if[ -d "${INSTALL_DIR}" ]
then
rm-rf "${INSTALL_DIR}"
fi
mkdir-p "${INSTALL_DIR}"
cp-R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into oneUniversal final product.
lipo-create "${DEVICE_DIR}/${FMK_NAME}""${SIMULATOR_DIR}/${FMK_NAME}" -output"${INSTALL_DIR}/${FMK_NAME}"
rm-r "${WRK_DIR}"
脚本的主要功能是:
1.分别编译生成真机和模拟器使用的framework; 2.使用lipo命令将其合并成一个通用framework; 3.最后将生成的通用framework放置在工程根目录下新建的Products目录下。
如果一切顺利,对LinkPhone1执行run操作以后就能生成一个如图1.9所示的通用framework文件了:
图1.9
1.2 接口准备
接口分为两类 : 1个是准备跳转不带xib文件的视图控制器, 另一个是跳转有xib的视图控制器
无xib:
1. 创建一个视图控制器,我的名字叫做FirstViewController如图2.0所示
图2.0
2.在Interface.h接口类中 , 写入口方法:
-(void)SetRootViewController:(UIViewController *)mainCon如图2.1所示
图2.1
在Interface.m中实现, 如图2.2所示
图2.2
有xib:
创建一个带有xib的视图控制器, 我就做XIBViewController,如图2.3所示
图2.3
在Interface.h中写:
- -(void)setXibRootViewController:(UIViewController*)mainCon andBundle:(NSBundle *)bundle;如图2.4所示
图2.4
- 在Interface.m中写,如图2.5:
图2.5
动态共享库也就是链接库就算彻底创建完毕了, 下一步我们就要创建主程序并且打开共享库 请看 动态链接库的使用(二):打开