前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >创建属于自己的静态库,并合并静态库

创建属于自己的静态库,并合并静态库

作者头像
用户1451823
发布2018-09-13 16:45:13
1.1K0
发布2018-09-13 16:45:13
举报
文章被收录于专栏:DannyHoo的专栏DannyHoo的专栏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1338059

    静态库  什么是静态库,它是我们在进行编译的时候(command+B)可以直接链接到的目标代码,在运行的时候就无需再次加载.后缀名为.a.(别人是无法看到静态库中的内容的,这样可以达到保密的效果)

    有静态库相应地就有动态库,那什么又是动态库呢,它是我们在编译的时候不链接的目标代码而是在加载的时候才链接,后缀名为.o.

    静态库的使用:

    在项目的开发中经常会用到静态库.如果我们不希望别人看到我们代码的内部实现,我们就可以给别人一个静态库.

    在使用静态库之前让我们先来创建静态库:

    1.首先创建一个Project,选择Framework&Library中的Static Library

    静态库创建之后,Xcode会为我们生成.h和.m文件,如下图.并且TARGETS处的小图标也会较之前有所变化.

    2.实现静态库中的功能

    静态库创建好之后我们就可以实现静态库的功能了,(在.h和.m文件中),实现的过程和我们平时写代码是一样的(.h声明, .m实现).

    .h中的代码:

    #import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

@interface StaticLibrary1 : NSObject

/*

 异步加载网络图片

 参数1: 待加载的图片视图

 参数2: 待加载的图片的URL

 */

  • (void)SL_setImageView:(UIImageView *)imageView withURL:(NSString *)url;

@end

    .m中的代码:

    #import "StaticLibrary1.h"

@implementation StaticLibrary1

  • (void)SL_setImageView:(UIImageView *)imageView withURL:(NSString *)url

{

    // 执行效率高  更加简洁(block)

    // 对应全局队列开启了一个异步任务

    dispatch_async(dispatch_get_global_queue(0, 0), ^{

        // 下载图片数据

        NSURL * URL = NSURL URLWithString:url;

        NSData * data = NSData dataWithContentsOfURL:URL;

        UIImage * image = UIImage imageWithData:data;

        // 回调主线程

        dispatch_async(dispatch_get_main_queue(), ^{

            // 刷新

            imageView.image = image;

        });

    });

}

@end

    3.下面就是生成相应的静态库.a文件了

    首先编译一下.

    此时生成的.a文件是红色的表明这不是一个实际存在的文件,为偶们无法在Finder中找到.这时我们需要选择真机然后再进行编译.

    此时的.a文件变黑了,我们就可以在Finder中找到此文件了.

    实际上会有两个.a文件,如下图

    它们分别是真机所需要的静态库和模拟器所需要的静态库.

    针对真机和模拟器的静态库文件只能在一个平台下面使用,我们需要将两个静态库合并成一个在真机上和模拟器上都可以使用的静态库文件.

    4.合并静态库

    合并的方式不止一种,我们选择利用终端的方式

    首先在终端上输入lipo -create,然后将两个静态库文件拖到终端中,再在最后输入-ouput 紧跟一个路径,这是合并后的静态库存放的位置.

    生成了.a文件,表明合并成功.

    5.使用静态库

    接下来就让我们来用一下我们自己创建的静态库

    新建一个工程,并将静态库和.h文件导入工程.

    在代码中使用静态库:

    UIImageView * imageView = [UIImageView alloc initWithFrame:CGRectMake(100, 100, 100, 100)];

    self.view addSubview:imageView;

    StaticLibrary1 SL_setImageView:imageView withURL:@"http://pic.nipic.com/2007-11-09/2007119122519868_2.jpg";

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年11月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档