李洪强iOS开发之静态库的打包一

//静态库一般做一下几种事情

//1 工具类 算法逻辑

新建工具类LHQTools

定义类方法

+ (NSInteger)sumWithNum1: (NSInteger)num1 andNum2:(NSInteger)num2;

类方法的实现

+(NSInteger)sumWithNum1:(NSInteger)num1 andNum2:(NSInteger)num2{

return num1 + num2;

}

使用

在主控制器计算值

NSLog(@"%ld",(long)[LHQTools sumWithNum1:10 andNum2:10]);


//2 实现加载一定的资源,放在bundle中避免资源重名

将存放图片的bundle拖入文件夹

定义类方法

+ (UIImage *)loadLogo;

实现类方法

+(UIImage *)loadLogo{

//把图片封装到bundle里面

return [UIImage imageNamed:@"CZTools.bundle/logo.png"];

}

来到主控制器中使用

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

imageView1.image = [LHQTools loadLogo];

[self.view addSubview:imageView1];

这个时候,运行程序,会显示这张图片

//3 封装视图

新建继承自UIView的类

定义类方法

#import <UIKit/UIKit.h>

@interface LHQDemoView : UIView

- (instancetype)initWithFrame:(CGRect)frame andCompelete:(void(^)(NSString *msg))block;

@end

实现类方法

#import "LHQDemoView.h"

@interface LHQDemoView()

//block定义的时候一定要用copy

/*

block默认在栈中  栈中内存归系统管理

系统管理有个弊端:到作用于结束就被干掉

执行了一个copy操作之后,就会把block从栈中放到堆中

会自动有一个强引用来指向它

*/

@property(nonatomic,copy)void(^block)(NSString *);

@end

@implementation LHQDemoView

- (instancetype)initWithFrame:(CGRect)frame andCompelete:(void(^)(NSString *msg))block{

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

UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];

[btn setTitle:@"提示" forState:UIControlStateNormal];

[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];

[self addSubview:btn];

self.block = block;

}

return self;

}

- (void)btnClicked: (UIButton *)btn{

self.block(@"点击了某个按钮");

NSLog(@"btnClicked");

}

- (void)drawRect:(CGRect)rect{

//画一个圆

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds];

[[UIColor redColor]setFill];

//    [path stroke];

[path fill];

}

来到主控制器中调用:

//3 封装视图

LHQDemoView *demoView = [[LHQDemoView alloc]initWithFrame:CGRectMake(100, 200, 100, 100) andCompelete:^(NSString *msg) {

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"温馨提示" message:msg delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];

[alert show];

}];

[self.view addSubview:demoView];

效果:

//打包.a的细节

//版本分情况

// 真机

//debug  调试(增加了控制台的各种输出 效率不太好)

//realease 发布 上线 (纯净)

//模拟器

//debug  调试(增加了控制台的各种输出 效率不太好)

//realease 发布 上线 (纯净)

//合并真机和模拟器的指令,大小是两种之和

//lipo -create

//-output libCZTools

为了代码的保密

加密的(key)不想让别人看到,就封装到.a里面返回一个加密之后的字符串

不知道盐别人是看不到的

李洪强iOS开发之静态库的打包一的更多相关文章

  1. 李洪强iOS开发之静态库

    iOS开发拓展篇—静态库 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 ...

  2. 李洪强iOS开发本人集成环信的经验总结_01环信SDK的导入

    李洪强iOS开发本人集成环信的经验总结_01环信SDK的导入 01 - 直接在项目中导入SDK和一些静态库 这个时候,没有错误的编译没有错误的话,就说明SDK已经配置成功 还有一种方法是用cocoap ...

  3. 李洪强iOS开发之-环信02_iOS SDK 介绍及导入

    李洪强iOS开发之-环信02_iOS SDK 介绍及导入 iOS SDK 介绍及导入 iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SD ...

  4. 李洪强iOS开发之-入门指南

    李洪强iOS开发之-入门指南 1零基础小白如何进行iOS系统学习 首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走:再次,学技术最重 ...

  5. 李洪强iOS开发之性能优化技巧

    李洪强iOS开发之性能优化技巧 通过静态 Analyze 工具,以及运行时 Profile 工具分析性能瓶颈,并进行性能优化.结合本人在开发中遇到的问题,可以从以下几个方面进行性能优化. 一.view ...

  6. 李洪强iOS开发之添加手势

    李洪强iOS开发之添加手势 02 - 添加手势

  7. 李洪强iOS开发之- 实现简单的弹窗

     李洪强iOS开发之- 实现简单的弹窗 实现的效果:  112222222222223333333333333333

  8. 李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView

    李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView 11111222

  9. 李洪强iOS开发之苹果使用预览截图

    李洪强iOS开发之苹果使用预览截图 01 在预览的图片中选中你要截得区域  02 - command + C   03 - Command + N 04 - Command + S (保存)

随机推荐

  1. 关于CASE WHEN的多条件汇总问题

    https://bbs.csdn.net/topics/392217817?page=1 问题: --创建测试表 IF EXISTS (SELECT * FROM sys.objects WHERE ...

  2. 【LeetCode】Longest Substring with At Most Two Distinct Characters (2 solutions)

    Longest Substring with At Most Two Distinct Characters Given a string, find the length of the longes ...

  3. angularJS实现无刷新文件下载

    $scope.getExcel = function () { $http.post("/production/statistics/export", { storeId: $sc ...

  4. Zabbix Trigger表达式实例

    Zabbix提供强大的触发器(Trigger)函数以方便进行更为灵活的报警及后续动作,具体触发器函数可以访问https://www.zabbix.com/documentation/2.0/manua ...

  5. HDU 4302 Holedox Eating (STL + 模拟)

    Holedox Eating Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. HDU 4301 Divide Chocolate (DP + 递推)

    Divide Chocolate Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. Android----输入模式设置

    InputType的参数: 用法:((EditText)findViewById(R.id.edit)).setInputType(InputType.*); int TYPE_CLASS_DATET ...

  8. MySQL慢查询mysqlsla

    转:http://www.osyunwei.com/archives/7659.html 必须在MySQL服务器上安装mysqlsla 1.mysqlsla是perl编写的脚本,运行mysqlsla需 ...

  9. 【js】在js中加HTML注释标签的原因?

    <script type="text/JavaScript"> <!-- js代码 //--> //就是这句,为什么还要在-->前加上js注释 < ...

  10. appium简明教程(4)——appium client的安装

    appium client是对webdriver原生api的一些扩展和封装.它可以帮助我们更容易的写出用例,写出更好懂的用例. appium client是配合原生的webdriver来使用的,因此二 ...