
笔记
文章平均质量分 74
一个默默无闻的程序猿
这个作者很懒,什么都没留下…
展开
-
使用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 · 769 阅读 · 0 评论 -
使用xcworkspace调试framework源码
项目开发中,经常会使用自己封装或第三方的framework,但是出现问题时,我们需要调试framework包里的代码,怎么把现有工程和framework包的源码相关联,一起调试呢?可以使用xcode提供的workspace把两个项目关联起来。一、创建xcworkspace打开xcode,菜单File – New – Workspace…创建完是一个空的workspace二、关联项目以上一篇iOS创建framework静态库(SDK&组件化)创建的两个项目为例菜单File – Add原创 2020-07-28 14:19:06 · 1006 阅读 · 0 评论 -
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 · 1700 阅读 · 0 评论 -
iOS静态分析Analyze、内存泄漏Leaks分析
在iOS日常开发中,内存管理十个很重要的话题和注意事项。在老的iOS版本中,都是手动管理内存(MRC),要时刻注意着内存的开辟和释放,很容易造成内存泄漏。ARC(自动引用计数)是iOS5、macOS10.7引入的内存管理技术,它使我们的开发更省心,不用去关注内存的释放,都交给了AutoReleasePool去管理。MRC和ARC在其他的文章介绍了,在这就不多阐述了。有了ARC就一定不会造成内存...原创 2019-08-18 16:54:21 · 991 阅读 · 0 评论 -
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 · 2323 阅读 · 1 评论 -
H5页面WebView在iPhoneX的适配
1. iPhoneX的介绍屏幕尺寸 我们熟知的iPhone系列开发尺寸概要如下:△ iPhone各机型的开发尺寸转化成我们熟知的像素尺寸:△ 每个机型的多维度尺寸倍图其实就是像素尺寸和开发尺寸的倍率关系,但这只是外在的表现。倍图核心的影响因素在于PPI(DPI),了解屏幕密度与各尺寸的关系有助于我们深度理解倍率的概念:《基础知识学起来!为设计师量身打造的DPI指南》iPhone8在本次升级...原创 2018-05-03 15:19:23 · 16245 阅读 · 1 评论 -
九州Mac打印机配置
仅限九州证券办公区设备,注意要连接到“JZSEC”的wifi环境下打印。一、下载驱动首先在Mac上要下载驱动fxmacprnstd1702am105iml.dmg,下载地址https://download.youkuaiyun.com/download/yujianxiang666/11483883二、添加打印机在“系统偏好设置” --> “打印机与扫描仪” 点“+”注意队列是...原创 2018-03-14 18:05:41 · 765 阅读 · 0 评论 -
适配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 · 3509 阅读 · 0 评论 -
获取苹果设备和系统信息(更新至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 · 1704 阅读 · 0 评论 -
北京居住证办理流程
近期有几个北京的朋友问我居住证的办理流程,我在这里简单说一些流程,做个笔记,仅供参考。早期在北京暂住证和居住证是有区别的,现在取消了暂住证,改为居住证和工作居住证,现在的居住证就相当于之前的暂住证。实行新政之后,也开通了网上预约办理,但一开始的时候是要先办理居住登记卡,满半年之后才能拿着卡去办居住证,登记卡的作用就是证明你在北京的居住时间超过半年了。现在流程简化了,用在北京的近半年的税单(去地原创 2017-08-16 11:18:33 · 2574 阅读 · 0 评论 -
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 · 2923 阅读 · 0 评论 -
HTTP状态码
当浏览器从 web 服务器请求服务时,可能会发生错误。从而有可能会返回下面的一系列状态消息:所有状态码的第一个数字代表了响应的五种状态之一。消息(1字头)这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验原创 2015-07-30 12:54:02 · 580 阅读 · 0 评论 -
在Mac下配置:Apache+php+MySql
一、启动ApacheMac系统自带Apache,启动有两种方法1、打开网络共享 打开"系统偏好设置"->"共享",在"互联网共享"那一项前面打√。2、打开终端,输入sudo apachectl start这时需要输入密码,输入电脑密码即可,然后输入sudo apachectl -v可以查看到Apache的版本信息Server version: Apache/原创 2016-07-12 11:02:09 · 1083 阅读 · 1 评论 -
mac上mysql不能插入中文问题
编码问题需要设置成统一的编码格式才行,命令行进去mysqlmysql -u root -p输入命令查看当前数据库的编码格式:show variables like 'character_set_%';如果和下面一致就没问题:mysql> show variables like 'character_set_%';+--------------------------原创 2016-07-13 12:50:44 · 6859 阅读 · 4 评论 -
Git代码管理
代码提交一般有五个步骤:1.查看目前代码的修改状态2.查看代码修改内容3.暂存需要提交的文件4.提交已暂存的文件5.同步到服务器 git 命令:1.克隆代码git clone 代码仓库地址 文件夹名 2.提交代码基本步骤2.1 git status (查看本次修改的文件列表)2.2git add 要提交的文件名 (添加单个要提原创 2015-10-29 14:25:27 · 744 阅读 · 0 评论 -
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 · 1103 阅读 · 0 评论 -
iOS底层原理笔记:OC的类和对象、isa指针和消息传递
平时看到过一些关于Objective-C的底层的文章和书籍,在这记录一下一些重要的知识点。一、本质在runtime库中,对象是用C语言中的结构体表示的,用C/C++和汇编编写实现的。Objective-C -->C/C++ --> 汇编语言 --> 机器语言在Xcode中一层一层点到NSObject的内部实现时候,会看到它是由Class结构体来实现的...原创 2019-06-28 18:23:35 · 482 阅读 · 0 评论 -
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 · 565 阅读 · 0 评论 -
iOS开发之Block访问外部变量和循环引用问题
说起Block在iOS开发中作用非常多,用处也非常广。但要用好Block,确保业务逻辑正常,并且内存管理不出问题,也是不简单的。本篇不再阐述Block的概念和语法用法,就Block访问外部变量和循环引用问题来介绍一下。一、Block访问外部变量我们先看一个block访问外部变量的例子: int a = 10; void(^myblock)(void) = ^(v...原创 2019-08-18 17:24:31 · 772 阅读 · 0 评论 -
iOS多线程之定时任务
在iOS开发中我们经常会遇到一些业务,需要延迟一段时间去做一件事,或者是每隔一段时间都去做一件事,这就需要用到定时任务处理。iOS开发中常用的定时任务实现方式如下:performSelector 实现延时任务sleep(10)线程挂起/[NSThread sleepForTimeInterval: 10]实现任务等待,会阻塞主线程GCD的dispatch_after实现延时或dispatc...原创 2019-08-18 17:20:55 · 1024 阅读 · 0 评论 -
iOS多线程之线程锁
在多线程开发中,不可忽视的一个问题就是多个线程同时访问同一个资源时,会造成脏数据等预想不到的结果,为了避免这种现象,我们需要在访问资源的时候添加线程锁,来控制访问。添加线程锁的方式在这主要讲三种方式:@synchronized隐式创建锁对象NSLockGCD的dispatch_semaphore_t信号机制一、@synchronized( )@synchronized()内的对象设...原创 2019-08-18 17:17:34 · 757 阅读 · 0 评论 -
iOS多线程之GCD用法详解
在上一篇讲解了iOS开发的三种多线程实现方式的特点和用法,在这一篇主要讲解一下GCD的用法。GCD(Grand Central Dispatch)又叫大中央调度,它对线程操作进行了封装,加入了很多新的特性,内部进行了效率优化,提供了简洁的C语言接口,使用更加简单高效,也是苹果公司推荐的方式。特点:GCD 可用于多核的并行运算GCD 会自动利用更多的 CPU 内核(比如双核、四核)GCD...原创 2019-08-18 17:15:34 · 814 阅读 · 0 评论 -
iOS多线程GCD、NSTread和NSOperation简介
在iOS开发中我们经常会用到多线程来处理一些业务,那么iOS里有哪些实现多线程的方式呢?NSTread:封装程度最小、最轻量级,开销较大。GCD(Grand Central Dispatch):内部效率优化,提供简洁的C语言接口,更加简单高效。NSOperation:基于GCD的一个抽象基类,不需要管理线程的生命周期和同步,比GCD可控性强。一、NSTreadNSTread封装程度最...原创 2019-08-18 17:12:30 · 678 阅读 · 0 评论 -
Runtime动态创建一个类和修改方法的操作
我们都知道Objective-C是一门动态语言,它的动态性一方面就体现在了runtime上。接下来我们就来看一下,通过runtime来动态的创建一个类,并且给类添加属性和方法,并且还能给已有的类修改、替换方法的实现。动态的创建一个类的步骤:创建一个类添加属性(一定要在注册前添加)注册这个类添加方法销毁这个类-(void)createClass{ //创建一个新类 My...原创 2019-08-18 17:09:36 · 980 阅读 · 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 · 349 阅读 · 0 评论 -
iOS开发之Autoreleasepool简介
Autoreleasepool即自动释放池,是在ARC自动管理内存机制下用来管理程序中开辟的内存的,ARC工程每个进程都有个全局自动释放池。MRC中,调用[obj autorelease]的对象都会放到Autoreleasepool中统一管理。在没有手动添加AutoreleasePool的情况下,autorelease对象是在当前的runloop迭代结束时释放的。一、用法//MRC下用法N...原创 2019-08-18 17:04:20 · 494 阅读 · 0 评论 -
iOS单例模式之MRC和ARC单例类
在iOS的开发中,我经常会用到的一种设计模式:单例模式,目的是让这个对象只实例化一次,在内存中只有一份内存。而且是常驻内存,不会被释放。手写一个单例也许我们都已经很熟悉,但是真的写的很完善吗,有哪些需要注意的呢?全局静态实例对象提供一个供外部调用的类方法加线程锁,防止重复实例化重写内存分配方法下面我们就在MRC和ARC两种模式下看一下单例的写法有什么区别。MRC单例首先我们来看...原创 2019-08-18 17:00:16 · 243 阅读 · 0 评论 -
__bride、__bride_transfer和__bride_retain的区别和用法
在上一篇里讲到内存泄漏的检测,有一处内存泄露是由于CoreFoundation创建的对象没有释放掉,在开发中Foundation和CoreFoundation框架里的对象需要转换才能用。一、ARC和Foundation、CoreFoundation和它一样的还有__bride_transfer和__bride_retain,那么他们之间有什么关系和区别呢?在讲这个之前我们先看一下ARC和Fou...原创 2019-08-18 16:57:57 · 231 阅读 · 0 评论 -
合并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 · 1087 阅读 · 0 评论 -
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 · 3947 阅读 · 0 评论 -
Sqlite修改数据库表名修改、增加字段
SQLite 仅仅支持 ALTER TABLE 语句的一部分功能,我们可以用 ALTER TABLE 语句来更改一个表的名字,也可向表中增加一个字段(列),但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型、限定符等等。 改变表名 - ALTER TABLE 旧表名 RENAME TO 新表名 增加一列 - ALTER TABLE 表原创 2015-07-02 12:12:21 · 40801 阅读 · 4 评论 -
iOS开发-使用Storyboard进行界面跳转及传值
前言:苹果官方是推荐我们将所有的UI都使用Storyboard去搭建,Storyboard也是一个很成熟的工具了。使用Storyboard去搭建所有界面,我们可以很迅捷地搭建出复杂的界面,也就是说能为我们节省大量的时间。我们还可以很直观地看出各个界面之间的关系,修改起来也很方便。将来如果遇到需要作修改的地方,我们只需要找到相对应的Storyboard就可以了,比起以前来说,快捷了不少。我会在本转载 2015-04-29 15:33:16 · 777 阅读 · 0 评论 -
图片转换base64字符串及字符串反转回图片
最近做一个上传图片功能时,后台让把图片转成字符串后上传,感到很不解。。。 后来在网上查到一些资料,还真有这么搞的,但不知道意义何在,有什么好处呢?知道的小伙伴给回复下啊 顺便把字符串和图片互转的方法贴在这,就是把base64Encoding编码的字符串作为中介:图片转base64串: UIImage *_originImage = [UIIma原创 2015-04-21 15:07:43 · 5642 阅读 · 1 评论 -
iOS开发网络请求中ASIHTTPRequest的用法整理
ASIHTTPRequest是一款极其强劲的HTTP访问开源项目。让简单的API完成复杂的功能,如:异步请求,队列请求,GZIP压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证在新的版本中,还加入了Objective-C闭包Block的支持,让我们的代码更加轻简灵活。下面就举例说明它的API用法。发起一个同步请求同步意为着线程阻塞,在主线程中使用此方法会使应用Ha原创 2015-04-07 15:00:42 · 2444 阅读 · 0 评论 -
MAC OS X系统创建git服务器,支持mac/windows代码
一、安装git并配置用户名和密码已安装MacPorts的可以通过命令行安装:$ sudo port install git-core或者安装gitgui: http://code.google.com/p/git-osx-installer/配置全局用户名和密码:$ git config --global user.name "Elf Sundae"原创 2015-04-01 12:15:02 · 886 阅读 · 0 评论 -
解决iOS8安装企业版无反应问题
问题描述:iPhone5S IOS8.1.2原来的企业APP下载后无法安装,点击安装无反应方法一:还原网络设置(注:我想既然有缓存问题引起的(原因看方法二),清除缓存就可以恢复。方法二有个不好的下载中会有2个APP,安装成功后正常。方法一不好的就是网络密码要重新输入了,测试了3个iPhone5s,IOS8.1.2设备,2个可以1个不成功)方法二:(来着网络转)i原创 2015-03-31 18:27:20 · 1936 阅读 · 0 评论 -
MVC,MVP 和 MVVM 的图示
复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。昨天晚上,我读了《Scaling Isomorphic Javascript Code》,突然意识到,它们的区别非常简单。我用几段话,就可以说清。一、转载 2015-03-18 18:21:11 · 1034 阅读 · 0 评论 -
NULL,nullptr,null,nil,Nil,NSNull的区别
NULL:C语言里表示空指针((void*)0)或是0,C++里NULL定义为0;nullptr:C++里代表空指针常数,将空指针和整数0的概念拆开;null :Java中,用来标识一个不确定的对象,可以将null赋给引用类型变量,但不可以将null赋给基本类型变量;nil:OC中的实例对象的空值(a null instance);Nil:OC中的类原创 2015-03-17 10:36:01 · 1233 阅读 · 0 评论 -
iOS的XMPP Framework简介
一、登录和好友上下线1.1XMPP中常用对象们XMPPStream:xmpp基础服务类XMPPRoster:好友列表类XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类XMPPvCardCoreDataStorage:好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类XMPPvCardTemp:好友原创 2015-03-26 09:56:37 · 943 阅读 · 0 评论 -
iOS中的NSRunloop的简介与滚动视图时停止加载的问题
最早接触runloop的概念,是第一次用NSTimer的时候。一个最简单的例子:- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSTimer * timer = [NSTimer sch原创 2015-03-18 16:31:47 · 2930 阅读 · 0 评论