iOS xcode创建静态库封装自己的SDK及使用
https://www.cnblogs.com/JustForHappy/p/5773039.html
一,静态库和动态库的区别在这里就不说了,个人感觉如果是自己封装提供别人下载的话应该是静态库比较方便.(本文就是创建静态库及使用)
二,使用Xcode创建静态库
1,首先创建静态库工程
xcode ---->选择IOS下的Framework&Library ----->选择Cocoa Touch Static Library (记得这里确定是IOS下的,不是watchOS下的,小编第一次就是不注意创建错.)
2,创建完成之后,我们可以看一下界面顺便再.h和.m里面分别创建方法和输出信息
.h界面 创建方法
1 #import <Foundation/Foundation.h>
2
3 @interface logNews : NSObject
4 -(void)logNewsA;
5 +(void)logNewsB;
6 @end
.m界面实现方法

1 #import "logNews.h"
2
3 @implementation logNews
4 -(void)logNewsA{
5 NSLog(@"--------A");
6 }
7
8 +(void)logNewsB{
9 NSLog(@"--------B");
10 }
11
12 @end

3,点击 Build Phases -Copy Files 点击左下角的+号,会弹出项目中所有的文件.h和.m文件,这里的意思是要你添加你完成封装之后让别人能够看到的文件,这里我只选择 .h文件,选中文件之后点击add进行添加 如图(我添加的是logNews.h)
注:我在一篇帖子中看到过,如果项目中使用类目的话,会碰到链接问题,解决的办法就是需要同时在生成静态库的工程和使用静态库的工程中使用“-all_load”编译选项,即在对应target的"Build Settings"中的“Other Linker Flags”选项添加“-all_load”,使用静态库的工程中是一定要加该编译选项的!至于生成静态库的工程中加不加没有试过,不过建议还是加上该编译选项.下面是原帖子地址:
(文/Shelin(简书作者)
原文链接:http://www.jianshu.com/p/656ba8094d1d)
4,选择Edit Scheme 将BuildConfiguration下的Debug更改为Release之后close
5,之后进行模拟器编译和真机编译,你会发现左侧的liblogNews.a文件由原来的红色变为现在的黑色
6,将模拟器.a文件和设备真机.a文件合成一个文件
首先找到对应项目的模拟器.a文件和真机.a文件
(1)打开终端在终端输入 open /Users/smile/Library/Developer/Xcode/DerivedData/ (smile 是自己的电脑名字)在打开的文件夹中找到自己对应的文件,logNews-hiakdvdtfjbhsjanpxkvmfmavmcb ------->Build ------>Products 在里面我们看到两个文件夹,这里面就是模拟器.a文件和真机.a问价(这里我就不截图了)
(2)在终端输入 lipo -create 模拟器.a文件的路径 真机.a文件的路径 -output 合并后的保存路径 我们就得到合并之后的.a文件
三,静态库的使用
1,新建文件夹命名为logNewsSDK,把我们获得的.a文件和我们需要显示的.h文件拷贝进去,就行了
2,把logNewsSDK导入新建的项目中.
(1),首先导入.h文件
(2)创建对象,创建对象之后,调用加好方法和减号方法
1 logNews * p = [[logNews alloc]init];
2 [p printA];
3 [Print printB];
3,最后输出结果
iOS xcode创建静态库封装自己的SDK及使用的更多相关文章
- Xcode 创建静态库和动态库
1.linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库:这类库的名字一般是libxxx.a:利用静态函数库编译成的文件 ...
- iOS:创建静态库及其使用
本篇来自转载,原创链接为:http://my.oschina.net/leejan97/blog/284193 摘要: 静态库文件可以有效的将功能封装和细节隐藏 ios 静态库 static lib ...
- 在iOS中创建静态库
如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加入我们的翻译小组(联系qq:2408167315). =========================================== ...
- iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...
- iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 新建工程:File -> Ne ...
- iOS 元件组件-创建静态库static library
概述 在项目开发的过程中,经常使用静态库文件.例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节. 库是一些没有mai ...
- iOS 创建静态库文件时去掉当中的Symbols
在project中创建静态库文件时.默认会将一些Symbols加到静态库文件里.这样做有两个缺点: 1.假设引用静态库文件的project中发生了bug.就会直接跳转到静态库的源代码. 也许有人问:静 ...
- iOS开发中静态库制作 之.a静态库制作及使用篇
iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...
- iOS开发之静态库(二)—— .a
前面已经介绍了iOS中静态库的基本概念和特点,这里就不再多废话,直接上代码 编译环境Xcode5.1 + Mac OS X 10.9.3 新建静态库项目 Xcode中创建静态库的模板有两个,一个是创建 ...
随机推荐
- baidu.com直接访问网站,不跳转www.baidu.com
平常最多的需求是将baidu.com指向全域名www.badu.com,但是往往需求是各种各样,这两天就遇到一个反向需求.将baidu.com直接访问网站,而不做跳转. 最近两天在给域名证书续费,但是 ...
- POJ3150 Candies【差分约束】
During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher b ...
- HDU 3480 - Division - [斜率DP]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3480 Time Limit: 10000/5000 MS (Java/Others) Memory L ...
- nautilus
在~/.bashrc中定义命令别名,添加以下命令: # some more nautilus aliases alias here='nautilus . > /dev/null 2>&a ...
- Unity-反编译由IL生成的DLL文件
本文由博主SunboyL原创,转载请注明出处:http://www.cnblogs.com/xsln/p/DLL_DeCompilation.html 在Unity实际开发过程中,我们 ...
- div+css网页标准布局实例教程(二)
五.布局页面——头部和导航 有了上边的基础,下面的任务就是要利用html和css制作完成一个完整的网页了.先从头部开始,第三小节时我们已经把整体框架给搭建好了,就像盖房子一样,整体结构已经出来了,下面 ...
- less语言特性(二) —— 混合
在 LESS 中我们可以定义一些通用的属性集为一个 class,然后在另一个 class 中去调用这些属性,下面有这样一个 class: 1 2 3 4 .bordered { border-top: ...
- Storyboard Reference
在某些情况下.你开发的应用可能包括有各种各样的复杂界面,假设你使用Storyboard来管理这些界面,通常你会将这些界面依照对应的逻辑分成很多子模块,放在不同的storyboard里,比方注冊相关的放 ...
- GitLab修改时区
https://yq.aliyun.com/articles/275765 一.背景 今天有同事在GitLab上查看时间的时候,发现GitLab上显示的时间和提交的时间不一致. 本地时间现在为:201 ...
- python中实现mysql连接池
python中实现mysql连接池 import pymysql from DBUtils.PooledDB import PooledDB MYSQL_HOST = 'localhost' USER ...