8 framework ios_ios framework 包含framework - CSDN
  • iOS 封装生成.framework

    2018-09-19 17:14:30
    之前做过一个蓝牙项目,向蓝牙发送指令,蓝牙...半年后,做widget开发,需要封装.framework,然而我又忘记了怎么封装,翻了翻之前写的才记起来,因此想写个bolg来记录下怎样封装.framework 封装步骤 1.创建项目...

    之前做过一个蓝牙项目,向蓝牙发送指令,蓝牙硬件会根据指令做出相应的反应动作。然而蓝牙开发商想让第三方公司进行二次开发,又不想让第三方知道详细的指令,那么我这边就封装了一个.framework静态库给那边进行使用。半年后,做widget开发,需要封装.framework,然而我又忘记了怎么封装,翻了翻之前写的才记起来,因此想写个bolg来记录下怎样封装.framework

    封装步骤

    1.创建项目  如图选择Framework & Libray选中Cocoa Touch Framework 然后Next

     

    2.创建这个framework的初衷是和Controller和Widget共享代码,这里我命名为ShareTable 寓意为共享TableView

    新建.h .m 需要共享的ShareTableView  代码如下  

    ShareTableView.h

    #import <UIKit/UIKit.h>

     

     

    /**

     点击TableViewCell的行事件

     

     @param row 行号/某一行

     */

    typedef void(^RowClickBlock)(NSInteger row);

     

    @interface ShareTableView : UITableView<UITableViewDelegate,UITableViewDataSource>

     

    @property (nonatomic,strong)NSMutableArray *shareArray; //数据源

    @property (nonatomic,copy)RowClickBlock rowClickBlock;

     

    @end

     

    ShareTableView.m

    @implementation ShareTableView

     

    - (NSMutableArray *)shareArray{

        if (!_shareArray) {

           _shareArray = [[[NSUserDefaults alloc] initWithSuiteName:@"group.com.msd.app"] valueForKey:@"TextF"];

        }

        

        return _shareArray;

    }

     

    -(instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style{

        if (self = [super initWithFrame:frame style:style]){

            

            self.dataSource = self;

            self.delegate = self;

            self.layer.cornerRadius = 10.f;

            self.showsHorizontalScrollIndicator = NO;

            self.showsVerticalScrollIndicator = NO;

            self.separatorStyle = UITableViewCellSeparatorStyleNone;

            self.tableFooterView = [[UIView alloc]init];

            self.bounces = NO;

            self.backgroundColor = [UIColor clearColor];

        }

        return self;

    }

     

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

        return self.shareArray.count;

    }

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

        return 30.f;

    }

     

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

        static NSString *str = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:str];

        

        if (!cell){

            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];

        }

        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        cell.textLabel.text = self.shareArray[indexPath.row];

        cell.textLabel.font = [UIFont systemFontOfSize:15];

    //    cell.textLabel.textColor = [UIColor grayColor];

        

        return cell;

    }

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

        [tableView deselectRowAtIndexPath:indexPath animated:YES];

        if (self.rowClickBlock) {

            self.rowClickBlock(indexPath.row);

        }

        

    }

     

    ShareTable.h中导入ShareTableView  如图 (项目结构图)

     

    3.修改项目参数 

    在TARGETS下选中工程,在Build Settings下更改几个参数。

     

    将Build Active Architecture Only 设置为NO。

    设置Headers 将需要公开的头文件拖至Public下,默认情况下创建的文件全都是隐藏的,需要手动拖动,要隐藏的放在Private或者Project下,需要注意的是隐藏的头文件无法被引用

     

    4.打包.framework

    选中TARGETS下的工程,点击上方的Editor,选择Add Target

     

    选择Cross-platform下的Aggregate  然后Next   

     

    我们把这个Aggregate命名为Share,添加后如下图

     

    添加脚本。选中刚刚创建的Aggregate(Share),然后选中右侧的Build Phases,点击左下方加号,选择New Run Script Phase,然后把下面这段脚本复制进去,注意:一个空格都不能多,否则会报错

    FMK_NAME=${PROJECT_NAME}

    if [ "${ACTION}" = "build" ]

    then

    INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework

    DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${FMK_NAME}.framework

    SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${FMK_NAME}.framework

    if [ -d "${INSTALL_DIR}" ]

    then

    rm -rf "${INSTALL_DIR}"

    fi

    mkdir -p "${INSTALL_DIR}"

    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

    #ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"

    lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

    #这个是合并完成后打开对应的文件夹,你就可以直接看到文件了

    open "${SRCROOT}/Products"

    fi

    效果如下图

     

     

    5.到目前为止,基本完成了.framework的制作,现在只需要运行项目,一定要先运行ShareTabel,再运行Aggregate(Share)

    选择任意iPhone模拟器,选中ShareTable  运行  如图

     

    再选中Aggregate(Share)运行,就会生成.framework,并自动弹出如图

     

    这个名为ShareTable.framework就能直接拖入到项目中直接使用了。

    双击点开ShareTable.framework会发现如图

     

    点开Headers你将会发现2个头文件  一个是ShareTable.h系统引用的,一个是ShareTableView.h我们不想让别人看的(封装起来的)

     

    Demo下载地址:https://download.csdn.net/download/lixianyue1991/10676935

     

    下一篇将讲解Widget附带.framework的使用先贴个效果图

     

     

     

     

     

    展开全文
  • 本文目录 添加FrameWork 添加FrameWork到你的...对于iOS开发者来说,要添加第三方库的最直接的办法是:添加FrameWork到你正在开发的项目。FrameWork中可以包含头文件,和需要连接的库文件等。 添加FrameWo...

    本文目录

    添加FrameWork

    对于iOS开发者来说,要添加第三方库的最直接的办法是:添加FrameWork到你正在开发的项目。FrameWork中可以包含头文件,和需要连接的库文件等。

    添加FrameWork到你的项目

    • 选中你的项目(project) > 右击:add file to project > 选中你的FrameWork
    • xcode会询问add to target,一旦选中你要连接的target,编译时xcode就会自动连接你的framework生成最终的目标文件。

    使用#import 或者#include 包含framework的头文件

    #include “framework_name/headfile_name”
    #import “framework_name/headfile_name”

    • 一般情况下FrameWork目录下会有一个Top-level头文件,这个头文件的名称和FrameWork名称是一样的,它包含了FrameWork中所有涉及的其他头文件,我们可以直接包含这个Top-level头文件。
    • 当然,我们也可以包含FrameWork中指定的头文件。
    • 但是对于umbrella framework我们必须包含Top-level头文件。

    包含你的FrameWork

    如果你的FrameWork不在系统的[标准路径][6],就必须明确的指定你的FrameWork的搜索路径“Framework Search Paths“,Xcode会把这些路径参数传递给编译器和链接器

    Note:标准路径一般如下
    /System/Library/Frameworks
    /Library/Frameworks

    参考 [ developer.apple ]

    展开全文
  • iOS开发之制作framework

    2017-11-17 10:16:09
    Framework是资源的集合,将静态库(iOS8以后可以是动态库)和其头文件包含到一个结构中,让Xcode可以方便地把它纳入到你的项目中。 分为真机—Debug(调试)版本、真机—Release(发布)版本、模拟器—Debug版本、...

    iOS开发之制作framework





    什么是framework

    Framework是资源的集合,将静态库(iOS8以后可以是动态库)和其头文件包含到一个结构中,让Xcode可以方便地把它纳入到你的项目中。
    分为真机—Debug(调试)版本、真机—Release(发布)版本、模拟器—Debug版本、模拟器—Release版本;开发中一般都打包Release(发布)版本,将真机和模拟器版本合并,提供外界。
    在项目开发的过程中,例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成framework,别人只能调用接口,而不能知道其中实现的细节。
    framework对CPU架构的支持,首先了解iOS设备CPU架构方面的知识,ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,几乎所有手机都是使用它的。
    模拟器:iphone4s-5 : i386 , iphone5s-6plus : x86_64。
    真机:iphone3gs-4s : armv7 , iphone5-5c : armv7s (静态库只要支持了armv7,就可以跑在armv7s的架构上), iphone5s-6plus : arm64。
    armv6, armv7, armv7s是ARM CPU的不同指令集,原则是向下兼容的。例如iPhone4S CPU支持armv7, 但它同时兼容armv6,只是使用armv6指令可能无法充分发挥它的特性。

    怎么制作framework

    我们将自己自定义的一个控件制作成framwork供别人使用为例,来展示framework的制作过程。

    1. 打开Xcode创建一个framework工程。


      1. 修改一些配置信息,生成支持所有架构的版本。


      2. 将之前写好的控件源文件拖进工程,并做一些配置,主要是配置一下那些文件要暴露给别人使用,一般头文件需要暴露,实现文件不需要。


      3. 编译,要分别针对模拟器和真机进行编译。


      4. 编译成功就会在工程的products组下有一个黑色的xxxxx.framework的文件,如果编译失败是红色的,红色表示没有生成。


      5. 制作通用的framework,以上几步分别生成真机和模拟器的framework,接下来生成一个通用的。





     日记本

    小礼物走一走,来简书关注我

    赞赏支持
    Web note ad 1
    登录 后发表评论
     
    九天环佩
    2楼 · 2016.07.25 16:12

    如果工程使用了cocoapods要怎么打包呢

     
    肾得朕心
    3楼 · 2016.11.25 14:38

    模拟器不用把支持arm64与不支持arm64的合并吗

     
    zuolingfeng
    4楼 · 2017.03.23 11:28

    如何在framework添加图片并引用?

    zuolingfeng: 找到方法了,创建Mac OS Bundle,并把framework和Bundle一齐拷贝至项目使用,即可使用图片和xib等资源( 使用方式: [UIImage imageNamed:@"YourSDK.bundle/img.png"])。但还有个问题,就是如何把bundle放在framework里面?

    2017.03.23 12:32  回复
     
    260d120058f7
    5楼 · 2017.03.31 09:21

    xcode运行生成两个framework,再手动合并?

    展开全文
  • ios framework

    http://www.jianshu.com/p/ef3d5b7e7006
    http://www.knowsky.com/884469.html
    http://www.jianshu.com/p/6c033c39884a
    http://my.oschina.net/u/856930/blog/196484
    http://ios.jobbole.com/81583/
    https://segmentfault.com/q/1010000002952316
    网上有很多解释和写法,这里根据自己的实测做一下综合

    Framework常识

    苹果平台的链接库除了静态库 .a 和 动态库.dylib 之外,Mac OS/iOS 平台还可以使用 Framework。Framework 实际上是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发,这样 Xcode 能够很容易的将其集成到你的工程中去。

    在 iOS 8 之前,iOS 平台不支持使用动态 Framework,开发者可以使用的 Framework 只有苹果自家的 UIKit.Framework,Foundation.Framework 等。这种限制可能是出于安全的考虑。换一个角度讲,因为 iOS 应用都是运行在沙盒当中,不同的程序之间不能共享代码,同时动态下载代码又是被苹果明令禁止的,没办法发挥出动态库的优势,实际上动态库也就没有存在的必要了。

    由于上面提到的限制,开发者想要在 iOS 平台共享代码,唯一的选择就是打包成静态库 .a 文件,同时附上头文件(例如微信的SDK)。但是这样的打包方式不够方便,使用时也比较麻烦,大家还是希望共享代码都能能像 Framework 一样,直接扔到工程里就可以用。于是人们想出了各种奇技淫巧去让 Xcode Build 出 iOS 可以使用的 Framework,Framework 还有 “伪”(Fake) Framework 和 “真“(Real) Framework 的区别。

    iOS 8/Xcode 6 推出之后,iOS 平台添加了动态库的支持。为什么 iOS 8 要添加动态库的支持?唯一的理由大概就是 Extension 的出现。Extension 和 App 是两个分开的可执行文件,同时需要共享代码,这种情况下动态库的支持就是必不可少的了。但是这种动态 Framework 和系统的 UIKit.Framework 还是有很大区别。系统的 Framework 不需要拷贝到目标程序中,我们自己做出来的 Framework 哪怕是动态的,最后也还是要拷贝到 App 中(App 和 Extension 的 Bundle 是共享的),因此苹果又把这种 Framework 称为 Embedded Framework。

    系统会在需要的时候将framework载入内存中,多个应用程序可以同时使用同一个framework。这种方法可以使得你的代码易分享,在多个工程中复用,并且可以隐藏实现细节,控制公开的头文件。

    苹果平台的静态库和动态库的概念与其他平台的概念不尽相同。

    • 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
    • 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

    总结来说:其实就是加载时机和加载次数的不同。

    framework分为真机—Debug(调试)版本、真机—Release(发布)版本、模拟器—Debug版本、模拟器—Release版本;开发中一般都打包Release(发布)版本,将真机和模拟器版本合并,提供外界。(注意:debug和release要和引入framework的工程对应

    在项目开发的过程中,例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成framework,别人只能调用接口,而不能知道其中实现的细节。

    制作framework

    步骤

    1,新建工程

    这里写图片描述
    选择左边那个framework,右边那个是创建.a静态库的。

    2,创建接口代码

    这里写图片描述
    在工程中创建类,写一些开放给外部用的接口。
    第一个类,做点简单的加法,需要公开的api就写在h里面

    //
    //  Compute.h
    //  FrameworkTest
    //
    //  Created by yxhe on 16/7/6.
    //  Copyright © 2016年 yxhe. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Compute : NSObject
    - (NSInteger)addNumber:(NSInteger)a withNumber:(NSInteger)b;
    @end
    //
    //  Compute.m
    //  FrameworkTest
    //
    //  Created by yxhe on 16/7/6.
    //  Copyright © 2016年 yxhe. All rights reserved.
    //
    
    #import "Compute.h"
    
    @implementation Compute
    - (NSInteger)addNumber:(NSInteger)a withNumber:(NSInteger)b
    {
        return a + b;
    }
    @end
    

    第二个类,打印

    //
    //  Print.h
    //  FrameworkTest
    //
    //  Created by yxhe on 16/7/6.
    //  Copyright © 2016年 yxhe. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Print : NSObject
    - (void)printWords:(NSString *)words;
    @end
    
    //
    //  Print.m
    //  FrameworkTest
    //
    //  Created by yxhe on 16/7/6.
    //  Copyright © 2016年 yxhe. All rights reserved.
    //
    
    #import "Print.h"
    
    @implementation Print
    - (void)printWords:(NSString *)words
    {
        NSLog(@"%@", words);
    }
    @end
    

    最后在自动生成的导出头文件里把这两个类的h都import进去

    //
    //  FrameworkTest.h
    //  FrameworkTest
    //
    //  Created by yxhe on 16/7/6.
    //  Copyright © 2016年 yxhe. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    //! Project version number for FrameworkTest.
    FOUNDATION_EXPORT double FrameworkTestVersionNumber;
    
    //! Project version string for FrameworkTest.
    FOUNDATION_EXPORT const unsigned char FrameworkTestVersionString[];
    
    // In this header, you should import all the public headers of your framework using statements like #import <FrameworkTest/PublicHeader.h>
    #import <FrameworkTest/Compute.h>
    #import <FrameworkTest/Print.h>
    
    

    3,修改buildsettings

    这里写图片描述

    这里写图片描述
    选择TARGETS里面

    • Linking下面:Dead Code Stripping选No,Mach-O Type选择static或者dynamic都行(在后面有点区分
    • Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO

    4,设置Headers

    这里写图片描述
    把需要公开调用的头文件一道public里面,需要隐藏的放在private里面。

    5,打包framework

    • 选择一个模拟器,编译工程(command + B)
    • 选择一个真机或者Generic Device(建议),编译工程(command + B)
    • 在Finder中找到.framework文件

    生成成功后工程目录里的product从红色变成了正常颜色。
    这里写图片描述
    会看到分成了 模拟器和真机两个文件夹,此时就可以把这两个.framework分别引入到对应的模拟器或者真机项目使用了。

    6,合并framework

    通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。

    打开控制台输入

    lipo -create iphoneos下frameworkTest的路径 simulator下frameworkTest的路径 -output 新的路径,这样就完成了模拟器和真机版本的合并,新路径下的frameworkTest就是你合并后的文件,将这个文件名字改成和你未合并之前的Test一样的名字,放到framework文件夹下,替换掉原来的frameworkTest文件。

    例如我的

    lipo -create /Users/yxhe/Library/Developer/Xcode/DerivedData/FrameworkTest-gajdcpnghsabghalspugjmolohhd/Build/Products/Debug-iphoneos/FrameworkTest.framework/FrameworkTest /Users/yxhe/Library/Developer/Xcode/DerivedData/FrameworkTest-gajdcpnghsabghalspugjmolohhd/Build/Products/Debug-iphonesimulator/FrameworkTest.framework/FrameworkTest -output /Users/yxhe/Library/Developer/Xcode/DerivedData/FrameworkTest-gajdcpnghsabghalspugjmolohhd/Build/Products/FrameworkTest

    在目标文件夹里找到那个FrameworkTest文件,拖到真机.framework文件夹里替换掉原来的,这样,真机.framework就可以当做universal的framework使用了。

    tips

    • 合并还有另外一种方法,没试成功,是创建Aggregate跑脚本,不会写T_T
    • 带有图片资源的需要把图片打包成Bundle文件,和framework一起拷贝到相应的项目中。
    • 公开的类中如果引用的private的类,打包以后对外会报错,找不到那个private的类,可以把那个private的.h放到private里面

    使用framework

    引用系统framework

    1)选中项目名称
    2)选中TARGETS
    3)选中Build Phases
    4)在Link Binary With Libraries中添加。
    5)点击“+”号,加入所需的系统提供的.framework文件
    6)引入头文件,就行了

    引用第三方framework

    步骤

    这里主要使用之前创建的framework测试
    1)从Finder里面直接将.framework文件直接拖到工程目录中
    这里写图片描述
    2)在Link Binary With Libraries中添加framework
    这里写图片描述
    其实一般拖进去之后,这个项系统自动添加了
    注意:如果是Dynamic Libray形式的framework,需要添加到Embedded Frameworks
    3)在项目中引入头文件即可

    测试结果

    目录结构
    这里写图片描述
    代码的写法

    //
    //  ViewController.m
    //  FrameWorkUseTest
    //
    //  Created by yxhe on 16/7/6.
    //  Copyright © 2016年 yxhe. All rights reserved.
    //
    
    #import "ViewController.h"
    // 引入framework的头文件
    #import <FrameworkTest/Compute.h>
    #import <FrameworkTest/Print.h>
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (IBAction)onClick:(id)sender
    {
        Compute *compute = [[Compute alloc] init];
        NSInteger sum = [compute addNumber:7 withNumber:5];
        Print *print = [[Print alloc] init];
        [print printWords:[NSString stringWithFormat:@"7 + 5 = %ld", (long)sum]];
        _numberLabel.text = [NSString stringWithFormat:@"7 + 5 = %ld", (long)sum];
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    

    在模拟器和iphone6s真机上都成测试成功
    这里写图片描述

    源代码

    csdn:diy的framwork
    github:diy的framwork

    展开全文
  • ios cocoa framework开发详解
  • iOS - 制作 Framework

    2017-02-13 18:37:58
    苹果平台的链接库除了静态库 .a 和 动态库.dylib 之外,Mac OS/iOS 平台还可以使用 FrameworkFramework 实际上是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发,这样 Xcode ...
  • iOS Framework的创建

    2017-07-11 18:00:58
    创建framework2.修改相关配置1)设定SDK适配的iOS系统版本号2)选择性添加: armv7s原因: armv6, armv7, armv7s是ARM CPU的不同指令集, armv6设备:iPhone, iPhone2, iPhone 3G,第一代、第二代iPod Touch; ...
  • 摘要:Framework最近需要将公司项目中的公共代码给提取出来,打包成Framework来使用,这样可以使得我们的公共代码易于分享,并且可以在多个工程中易于复用,而且将这些代码给别人使用时,可以隐藏实现细节,控制公开的...
  • iOS基础Framework作用

    2016-02-19 16:11:37
    本文转载自:...  iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设备的操作系统.  OS(iOS)架构" alt="浅谈iPhone OS(iOS)架构" src="http://s4.sinaimg.cn/middle/62ba0f
  • iOS 自动生成framework并自动进行模拟器和真机framework合并 以iOS 加入lua framework为例 lua framework的具体引入 点击链接查看 iOS在生成framework时需要在真机下编译一次并在模拟器下编译一次 编译后还需要...
  • 摘要 在开发过程中,经常会遇到很多相同的控件、方法等内容;项目中的隐私核心算法、...在制作.framework和.a 库过程并不复杂,只要根据步骤操作一遍.framework和.a 库的制作你就很轻松的学会了,不要被这些步骤吓...
  • 编译framework1、iOS 开发里面,你不想把源代码给其他人,你就需要编译Framework1 、打开Xcode创建一个framework工程。2、新建一个TestFrame的工程3、新建一个hello的类,并写两个方法4、修改一些配置信息,生成支持...
  • 1.创建工程选择iOS/Framework & Library,选择Coaoa Touch Framework 2.删除自动生成的头文件.注意: Info.plist不能删除 3.创建Tool类,并对应提供log类方法,实现log类方法 // Tool.h文件中提供接口...
  • iosFramework简介

    2012-06-20 20:28:21
    Framework 简介 Mac OS X 扩展了 framework 的功能,让我们能够利用它来共享代码和资源。framework 在概念上有点像 Window 下的库,但是比库更加强大,通过 framework 我们可以共享所有形式的资源,如动态共享库...
  • iOS 动态载入framework

    2013-07-11 12:12:20
    我们开发提供给iOS 开发者者使用的第三方iOS SDK,需要使用几个Apple的Framework,例如 QuartzCore.framework、CoreLocation.framework等。  这样的话开发者集成我们SDK就需要在自己的Xcode工程引入这些系统...
  • 最近在做一个iOS的统计SDK,需要从零开始做一个framework,同时为了方便开发,花了点时间折腾,于是顺便总结一下iOS framework的开发流程,不同的Xcode版本流程会有些小区别,以下使用的是7.3.1。 建立framework...
  • Xcode 6下制作通用iOS Framework的脚本
  • iOS framework 制作

    2018-01-14 22:22:19
    最近在写了一个上传人眼图片的sdk给第三方用户使用,用到了iOS framework,在网上找了一些这方面写的比较好的文章: //iOS framework 具体制作过程 https://www.cnblogs.com/oc-bowen/p/7478461.html //xcode的...
  • ios 封装framework内部加载图片
  • 前言 如果想将自己开发的控件、代码与别人分享,首先我们可以直接提供源代码文件。但是,有时候我们并不想别人看到我们代码的实现,而这些实现我们可能并不想开源出来。别人也不想将我们写的代码都拖到项目中,他们...
1 2 3 4 5 ... 20
收藏数 64,178
精华内容 25,671
关键字:

8 framework ios