本稿来自本群 【Misery_IOS_武汉】投稿,初次投稿值得鼓励,而且重点是步骤很详细。感谢支持与配合!
以下是Misery的分享内容:
1. 新建一个 Project,选择CocoaTouch Static Library,取工程名为MarkKit,如图:
2 删除target,如图:
3. 在Xcode中new->file->target新建一个target;选择OS X目录下FrameWork&Library中的Bundle,取名为MarkiOSKit,如图:
4. 删除MarkiOSKit中MarkiOSKit-Prefix.pch中的#import<Cocoa/Cocoa.h>,如图:
5.修改target设置
Build Settings选项卡:
Base SDK选择Latest iOS(iOS 6.1)
Build ActiveArchitecture Only选择NO
Dead Code Stripping选择NO
Mach-O Type选择Relocatable Object File
Link With Standard Libraries选择NO
Wrapper Extension修改为framework
Info选项卡:
Bundle OS Type code 修改为FMWK
Build Phases选项卡:
点击右下角的Add Build Phases,选择AddCopy Headers. 添加头文件和源文件如图:
6. 在MarkKit.h和MarkKit.m里面写入你的函数声明和实现:
//MarkKit.h
#import <Foundation/Foundation.h>
@interface MarkKit : NSObject
- (void)printMarkKit;
@end
// MarkKit.m
#import "MarkKit.h"
@implementation MarkKit
- (void)printMarkKit
{
NSLog(@"Hello MarkKit!");
}
@end
7. 选择Run Scheme如图:
点击Run,成功运行;至此成功生成framework。
8. 查看framework build路径方式
点击Xcode右上角Organizer,选择Projects选项卡如图,点击红色标注里的箭头可以进入bulid路径,
红色标注的文件夹就是生成的framework。(文件夹下en.lproj和Info.plist都可以直接删除,只需保留Headers文件夹和MarkiOSKit就可以了)
让我们来测试一下,把这个文件夹添加到一个新的工程里面。
添加代码如下:
运行结果如下:
小编的补充:
本文主要是完成在XCODE4.6环境下,实现自定义框架。
自定义FrameWork就是通常说的库,可以共享各种代码和文件资源在里面,初步断定,一个framework再内存中只copy一次,也只拥有一个bundle。
优势:
第一,充分体现了模块化设计的可扩展性和高内聚行
第二,framework 能够进行版本管理,这使得 framework 能不断更新并向后兼容;
第三,在同一时间,即使有多个应用程序使用同一 framework,但在内存中只有一份 framework 只读资源的拷贝,这减少了对内存的占用