自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

如鱼得水的专栏

追求创新,与时俱进!

  • 博客(182)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用shell脚本自动合并framework

我们在做组件化或SDK的时候,经常会打静态库或动态库framework包,最后为了能适配模拟器和真机都能运行,我经常使用命令行的lipo工具把两者合并。其实为了简化工作,可以使用shell脚本,在xcode上一次性编译合并完成。以上一篇的iOS创建framework静态库(SDK&组件化)工程为例来讲一下。一、新建Target为自动化打包创建一个target,在xcode菜单File – New – Target,选择Cross-platform,然后选Aggregate:取个名字:然

2020-08-05 14:43:39 651

原创 使用xcworkspace调试framework源码

项目开发中,经常会使用自己封装或第三方的framework,但是出现问题时,我们需要调试framework包里的代码,怎么把现有工程和framework包的源码相关联,一起调试呢?可以使用xcode提供的workspace把两个项目关联起来。一、创建xcworkspace打开xcode,菜单File – New – Workspace…创建完是一个空的workspace二、关联项目以上一篇iOS创建framework静态库(SDK&组件化)创建的两个项目为例菜单File – Add

2020-07-28 14:19:06 862

原创 iOS创建framework静态库(SDK&组件化)

一、创建1、新建项目打开Xcode,菜单:File – New – Project…,选择iOS – Framework – Next,取名比如MySDK,保存。2、修改Schemes菜单 Project – Scheme – Edit Scheme…,Debug 改成 Release3、修改版本号和最低适配的iOS系统版本4、配置 Build SettingsBase SDK:iOS(基础系统)Build Active Architecture Only:NO(编译所有版本的Arc

2020-07-28 14:14:22 1585

原创 Swift&Objective-C混编互调

Swift开发是一种大趋势了,每年Apple都会发布新的版本。但是它的第三方库还是没有Objective-C的多,而且想用老项目中的工具类或框架,该怎么办呢?这就需要Swift&Objective-C混编互调了,但是在Objective-C的编译器主要可以识别以下几种扩展名的文件:.m文件,可以编写Objective-C代码或者C语言代码;.cpp文件,C++文件,只能识别C++或...

2019-08-18 17:27:46 468

原创 iOS开发之Block访问外部变量和循环引用问题

说起Block在iOS开发中作用非常多,用处也非常广。但要用好Block,确保业务逻辑正常,并且内存管理不出问题,也是不简单的。本篇不再阐述Block的概念和语法用法,就Block访问外部变量和循环引用问题来介绍一下。一、Block访问外部变量我们先看一个block访问外部变量的例子: int a = 10; void(^myblock)(void) = ^(v...

2019-08-18 17:24:31 676

原创 iOS多线程之定时任务

在iOS开发中我们经常会遇到一些业务,需要延迟一段时间去做一件事,或者是每隔一段时间都去做一件事,这就需要用到定时任务处理。iOS开发中常用的定时任务实现方式如下:performSelector 实现延时任务sleep(10)线程挂起/[NSThread sleepForTimeInterval: 10]实现任务等待,会阻塞主线程GCD的dispatch_after实现延时或dispatc...

2019-08-18 17:20:55 917

原创 iOS多线程之线程锁

在多线程开发中,不可忽视的一个问题就是多个线程同时访问同一个资源时,会造成脏数据等预想不到的结果,为了避免这种现象,我们需要在访问资源的时候添加线程锁,来控制访问。添加线程锁的方式在这主要讲三种方式:@synchronized隐式创建锁对象NSLockGCD的dispatch_semaphore_t信号机制一、@synchronized( )@synchronized()内的对象设...

2019-08-18 17:17:34 680

原创 iOS多线程之GCD用法详解

在上一篇讲解了iOS开发的三种多线程实现方式的特点和用法,在这一篇主要讲解一下GCD的用法。GCD(Grand Central Dispatch)又叫大中央调度,它对线程操作进行了封装,加入了很多新的特性,内部进行了效率优化,提供了简洁的C语言接口,使用更加简单高效,也是苹果公司推荐的方式。特点:GCD 可用于多核的并行运算GCD 会自动利用更多的 CPU 内核(比如双核、四核)GCD...

2019-08-18 17:15:34 695

原创 iOS多线程GCD、NSTread和NSOperation简介

在iOS开发中我们经常会用到多线程来处理一些业务,那么iOS里有哪些实现多线程的方式呢?NSTread:封装程度最小、最轻量级,开销较大。GCD(Grand Central Dispatch):内部效率优化,提供简洁的C语言接口,更加简单高效。NSOperation:基于GCD的一个抽象基类,不需要管理线程的生命周期和同步,比GCD可控性强。一、NSTreadNSTread封装程度最...

2019-08-18 17:12:30 615

原创 Runtime动态创建一个类和修改方法的操作

我们都知道Objective-C是一门动态语言,它的动态性一方面就体现在了runtime上。接下来我们就来看一下,通过runtime来动态的创建一个类,并且给类添加属性和方法,并且还能给已有的类修改、替换方法的实现。动态的创建一个类的步骤:创建一个类添加属性(一定要在注册前添加)注册这个类添加方法销毁这个类-(void)createClass{ //创建一个新类 My...

2019-08-18 17:09:36 627 1

原创 Runtime访问私有变量和方法及KVO访问

一、Class在之前的文章中我们提到,所有的对象都有个isa指针指向它对应的类Class,而Class是一个objc_class结构体,结构体中:实例变量列表objc_ivar_list方法列表objc_method_list对应的runtime获取方法:Ivar *class_copyIvarList(Class cls, unsigned int *outCount)Metho...

2019-08-18 17:06:42 294

原创 iOS开发之Autoreleasepool简介

Autoreleasepool即自动释放池,是在ARC自动管理内存机制下用来管理程序中开辟的内存的,ARC工程每个进程都有个全局自动释放池。MRC中,调用[obj autorelease]的对象都会放到Autoreleasepool中统一管理。在没有手动添加AutoreleasePool的情况下,autorelease对象是在当前的runloop迭代结束时释放的。一、用法//MRC下用法N...

2019-08-18 17:04:20 419

原创 iOS单例模式之MRC和ARC单例类

在iOS的开发中,我经常会用到的一种设计模式:单例模式,目的是让这个对象只实例化一次,在内存中只有一份内存。而且是常驻内存,不会被释放。手写一个单例也许我们都已经很熟悉,但是真的写的很完善吗,有哪些需要注意的呢?全局静态实例对象提供一个供外部调用的类方法加线程锁,防止重复实例化重写内存分配方法下面我们就在MRC和ARC两种模式下看一下单例的写法有什么区别。MRC单例首先我们来看...

2019-08-18 17:00:16 177

原创 __bride、__bride_transfer和__bride_retain的区别和用法

在上一篇里讲到内存泄漏的检测,有一处内存泄露是由于CoreFoundation创建的对象没有释放掉,在开发中Foundation和CoreFoundation框架里的对象需要转换才能用。一、ARC和Foundation、CoreFoundation和它一样的还有__bride_transfer和__bride_retain,那么他们之间有什么关系和区别呢?在讲这个之前我们先看一下ARC和Fou...

2019-08-18 16:57:57 179

原创 iOS静态分析Analyze、内存泄漏Leaks分析

在iOS日常开发中,内存管理十个很重要的话题和注意事项。在老的iOS版本中,都是手动管理内存(MRC),要时刻注意着内存的开辟和释放,很容易造成内存泄漏。ARC(自动引用计数)是iOS5、macOS10.7引入的内存管理技术,它使我们的开发更省心,不用去关注内存的释放,都交给了AutoReleasePool去管理。MRC和ARC在其他的文章介绍了,在这就不多阐述了。有了ARC就一定不会造成内存...

2019-08-18 16:54:21 881

原创 合并framework

Edit Scheme:选择run->将Debug模式改成Release模式,选择Close终端:输入并回车lipo -info 加真机上的这个文件路径 输出结果:armv7 arm64 说明是真机i386 x86_64 模拟器合并lipo -create 真机路径 模拟器路径 -output 输出文件路径再用lipo -info命令查看输出的合并后新的文件:这...

2019-08-18 16:49:41 1016

原创 iOS底层原理笔记:OC的类和对象、isa指针和消息传递

平时看到过一些关于Objective-C的底层的文章和书籍,在这记录一下一些重要的知识点。一、本质在runtime库中,对象是用C语言中的结构体表示的,用C/C++和汇编编写实现的。Objective-C -->C/C++ --> 汇编语言 --> 机器语言在Xcode中一层一层点到NSObject的内部实现时候,会看到它是由Class结构体来实现的...

2019-06-28 18:23:35 418

原创 iOS监听多个异步请求全部返回和多任务下载

提起ios中多个异步函数后的同步问题,自然会想到 dispatch group 这个概念,那么它能够解决异步网络请求的问题吗?对于dispatch多个异步操作后的同步方法,以前只看过dispatch_group_async,看看这个方法的说明:* @discussion * Submits a block to a dispatch queue and associates the b...

2019-03-04 17:03:27 2206 1

原创 H5页面WebView在iPhoneX的适配

1.  iPhoneX的介绍屏幕尺寸    我们熟知的iPhone系列开发尺寸概要如下:△ iPhone各机型的开发尺寸转化成我们熟知的像素尺寸:△ 每个机型的多维度尺寸倍图其实就是像素尺寸和开发尺寸的倍率关系,但这只是外在的表现。倍图核心的影响因素在于PPI(DPI),了解屏幕密度与各尺寸的关系有助于我们深度理解倍率的概念:《基础知识学起来!为设计师量身打造的DPI指南》iPhone8在本次升级...

2018-05-03 15:19:23 16034 1

原创 九州Mac打印机配置

仅限九州证券办公区设备,注意要连接到“JZSEC”的wifi环境下打印。一、下载驱动首先在Mac上要下载驱动fxmacprnstd1702am105iml.dmg,下载地址https://download.csdn.net/download/yujianxiang666/11483883二、添加打印机在“系统偏好设置” --> “打印机与扫描仪” 点“+”注意队列是...

2018-03-14 18:05:41 670

原创 适配iPhoneX和Xcode9

iPhone X的适配1、iPhone X, 5.8 英寸,屏幕分辨率为 1242 x 2800除去底部固定的功能区,屏幕显示范围的尺寸为 5.15 英寸,458ppi。竖屏尺寸:1125px × 2436px(375pt × 812pt @3x)横屏尺寸:2436px × 1125px(812pt × 375pt @3x)iPhone 7 设备渲染后分辨率

2017-11-07 18:36:18 3442

原创 获取苹果设备和系统信息(更新至iPhone X)

1.获得设备型号#import + (NSString *)getCurrentDeviceModel { struct utsname systemInfo; uname(&systemInfo); NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASC

2017-11-07 18:27:40 1611

原创 北京居住证办理流程

近期有几个北京的朋友问我居住证的办理流程,我在这里简单说一些流程,做个笔记,仅供参考。早期在北京暂住证和居住证是有区别的,现在取消了暂住证,改为居住证和工作居住证,现在的居住证就相当于之前的暂住证。实行新政之后,也开通了网上预约办理,但一开始的时候是要先办理居住登记卡,满半年之后才能拿着卡去办居住证,登记卡的作用就是证明你在北京的居住时间超过半年了。现在流程简化了,用在北京的近半年的税单(去地

2017-08-16 11:18:33 2342

原创 Xcode8配置和iOS10适配总结

一、Xcode8 插件以为是和之前一样 Xcode 升级了,只需要更新 Xcode info.plsit 中的 DVTPlugInCompatibilityUUID,结果发现一点用都木有泪奔;苹果解决xcode ghost,把插件屏蔽了,为此也给大伙找到了相关的解决方法,但是不怎么推荐这样做,因为烦的是不能够上传 iTunes content https://github.com/inke

2016-12-06 15:49:10 1623

转载 webView网页中JS调原生OC方法与JS注入

在iOS开发中用到webView的话,经常会有和JS打交道的时候,下面介绍一下OC和JS的一种简单沟通的方式。比如我们有一个下面这样的网页:html>  head>      meta xmlns="http://www.w3.org/1999/xhtml" http-equiv="Content-Type" content="text/html; charset=

2016-11-15 20:05:13 3340 1

原创 用字符串动态创建类并赋值

在开发中有时候会遇到用一个不确定的类实例化对象,即用字符串转换成类,并实例化对象和赋值;比如一个界面的跳转要有后台来控制,就可以用这种方式。下面简单记录下这个转换过程://The Model 假如这是我们要获取到的类@interface Person:NSObject{ @property(nonatomic,copy) NSString * name; @property(no

2016-10-11 11:21:28 1137

原创 iOS7之后计算字符串高度

iOS7之前计算字符串长宽的方法是:- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode NS_DEPRECATED_IOS(2_0, 7_0, "Use -boundingRectWithSize:options:att

2016-09-13 11:13:55 688

原创 iOS IPv6-only 的兼容性解决方案

6月1日后所有应用必须支持IPv6-only网络首先解释下IPv6的是什么?维基百科的定义如下:IPv6是Internet Protocol version 6的缩写 全名为互联网通讯协议第6版 是互联网协议的最新版本,用于分组交换互联网络的网络层协议,旨在解决IPv4地址枯竭问题IPv6具有比IPv4大得多的编码地址空间。这是因为IPv6采用了128位的地址,而IPv4使用的是3

2016-08-06 13:09:22 1437

原创 Mac上Apache部署本地PHP工程虚拟地址

最近自学PHP,在这简单说下PHP工程怎么用电脑的浏览器去访问。我用的是mac系统,开发工具是Zend Studio,Apache/2.4.18。比如我们要设置本机的虚拟域名为my.com一、首先找到Apache的安装目录:我的是在/private/etc/apache2在此目录下找到文件httpd.conf,在文件内容的中间位置有下面两行:# Virtual host

2016-07-14 15:48:21 2882

原创 mac上mysql不能插入中文问题

编码问题需要设置成统一的编码格式才行,命令行进去mysqlmysql -u root -p输入命令查看当前数据库的编码格式:show variables like 'character_set_%';如果和下面一致就没问题:mysql> show variables like 'character_set_%';+--------------------------

2016-07-13 12:50:44 6794 4

原创 在Mac下配置:Apache+php+MySql

一、启动ApacheMac系统自带Apache,启动有两种方法1、打开网络共享   打开"系统偏好设置"->"共享",在"互联网共享"那一项前面打√。2、打开终端,输入sudo apachectl start这时需要输入密码,输入电脑密码即可,然后输入sudo apachectl -v可以查看到Apache的版本信息Server version: Apache/

2016-07-12 11:02:09 1030 1

原创 Git代码管理

代码提交一般有五个步骤:1.查看目前代码的修改状态2.查看代码修改内容3.暂存需要提交的文件4.提交已暂存的文件5.同步到服务器 git 命令:1.克隆代码git clone 代码仓库地址 文件夹名 2.提交代码基本步骤2.1 git status       (查看本次修改的文件列表)2.2git add 要提交的文件名   (添加单个要提

2015-10-29 14:25:27 706

原创 HTTP状态码

当浏览器从 web 服务器请求服务时,可能会发生错误。从而有可能会返回下面的一系列状态消息:所有状态码的第一个数字代表了响应的五种状态之一。消息(1字头)这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验

2015-07-30 12:54:02 535

转载 iOS9适配注意事项

Demo1_iOS9网络适配_改用更安全的HTTPSiOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL。采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2。服务器因此需要更新,以解析相关数据。如不更新,可通

2015-07-14 10:24:21 1049

转载 objc/runtime中SEL、IMP和method动态定义

转自大神之作:http://blog.devwu.com/develop/2014-08-19/objcruntime-explore4/前言在这一篇中,我们来聊一聊runtime中method定义先来看一下method相关的定义typedef struct objc_method *Method;typedef struct objc_selector *SEL;ty

2015-07-03 12:08:21 3847

原创 Sqlite修改数据库表名修改、增加字段

SQLite 仅仅支持 ALTER TABLE 语句的一部分功能,我们可以用 ALTER TABLE 语句来更改一个表的名字,也可向表中增加一个字段(列),但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型、限定符等等。        改变表名 - ALTER TABLE 旧表名 RENAME TO 新表名        增加一列 - ALTER TABLE 表

2015-07-02 12:12:21 40375 4

原创 zBar扫描二维码时闪光灯自动打开问题

相信大家对zBar并不陌生,比较常用的扫描二维码和条形码的第三方库,在这不做过多解释。      我要说的是,有种场景我们在扫描二维码时,周围环境比较阴暗,光线不好,这个时候我们需要去开灯。这个时候的需求是我们如果能打开手机自带的闪光灯就好了。         到这一步并不难,网上也有很多关于打开手机闪光灯的代码,在这里我也贴出来一份:- (void)openLight:(UIButt

2015-07-01 11:37:29 3411

原创 ios6、7 版本适配

1,首先123456789//定义宏,判断ios7#define IOS7 [[[UIDevice currentDevice]systemVersion] floatValue] >= 7.0 //添加代码if (IOS7){    self.edgesForExtendedLayout

2015-06-12 10:21:49 864

原创 iPhone分辨率和坐标、设计图尺寸

两幅图片说明iPhone每个版本的屏幕分辨率、尺寸、像素和设计图大小:

2015-06-04 11:29:35 1199

转载 iOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)

首先了解一下CGContextRef:An opaque type that represents a Quartz 2D drawing environment.Graphics Context是图形上下文,可以将其理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框.具体的实现看代码,并有完美的注释解释,还有一些对我

2015-05-28 16:38:11 792

fxmacprnstd1702am105iml.dmg

Mac系统上,配置打印机的驱动程序,一键安装。配置教程https://www.jianshu.com/p/c369714bd7ab

2019-08-06

好学的Objective-C

作  者:(美)Jiva DeVoe 译 者:林本杰 丛 书 名:图灵程序设计丛 好学的Objective-C 出 版 社:人民邮电出版社 要为市面上最热门的Mac、iPhone和iPad等设备创建应用,就必须掌握Objective-C和面向对象编程。《好学的Objective-C》作者是顶尖的Mac开发人员和专业作家。通过本书的详尽指引,即使是编程新手也可以迅速学会Objective-C。本书全方位地介绍了Objective-C,从基础知识到资深程序员所使用的高级技术等众多主题,其中包括内存管理、多个框架的结合使用、线程安全的技巧,以及Xcode的详细用法等。通过阅读本书,读者将能够:掌握Objective-C语法、运行时和Xcode,编写出第一个移动应用程序创建类,使用属性,了解对象使用代码块、线程、KVO和协议定义和编写宏,处理错误并在项目中使用框架清理线程,学会使用设计模式,掌握高级技术利用NSCoder读写数据为Windows、Linux和其他平台编写代码本书既能引导Mac、iPhone和iPad开发新手入门,又可帮助高级程序员提高技能,是Objective-C开发人员的案头必备书籍。 第一部分 Objective-C 简介 第1 章 Objective-C 简介   第2 章 基本语法   第3 章 添加对象   第4 章 Objective-C 内存管理   第二部分 更多特性 第5 章 代码块   第6 章 键值编码和键值观察   第7 章 使用协议   第8 章 扩展现有类   第9 章 编写宏   第10 章 错误处理   第三部分 使用 Foundation 框架 第11 章 了解框架之间如何配合工作   第12 章 使用字符串   第13 章 使用集合   第14 章 使用NSValue、NSNumber和NSData   第15 章 处理时间和日期   第四部分 高级主题 第16 章 通过多个线程实现多处理   第17 章 Objective-C 设计模式   第18 章 利用NSCoder 读写数据   第19 章 在其他平台上使用Objective-C 

2013-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除