自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Victor_Barnett 的家园

爱代码,爱生活,爱自己

  • 博客(89)
  • 收藏
  • 关注

原创 Swift中throws处理方式

第一种方法:try 程序员手动捕捉异常 do { let array = try PropertyListSerialization.propertyList(from: plistData!, options: PropertyListSerialization.ReadOptions.mutableContainersAndLeaves, format: nil) } catch { print(error)

2021-03-31 16:40:40 538

原创 Swift - extension

概述 - extension在swift中,swift可以为特定的class, strut, enum或者protocol添加新的特性。当你没有权限对源代码进行改造的时候,此时可以通过extension来对类型进行扩展。extension有点类似于OC的类别 – category,但稍微不同的是category有名字,而extension没有名字。swift的extension可以做如下几件事,添加计算属性 - computed properties添加方法 - methods添加初始化方法 -

2021-03-10 17:11:51 498

原创 JXCategoryKit 系统基础类扩展

JXCategoryKit 系统基础类扩展包含 Foundation.framework 内的NSDate,NSTimer,NSObject,NSNull,NSFileManager,NSString,NSDictionary,NSError,NSBundle,NSArray 类扩展包含 UIKit.framework内的UIWindow,UIViewController,UIView,U...

2020-03-28 15:45:30 351

原创 .framework设置函数的可见性(__attribute__((visibility ("XXX"))))

.framework设置函数的可见性visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设置,需在代码中使用__attribute__设...

2018-05-14 22:12:36 1630

原创 iOS 的ARM和X86

介绍armv7|armv7s|arm64都是ARM处理器的指令集i386|x86_64 是Mac处理器的指令集arm64:iPhoneX | iPhone8 | iPhone7 | iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Pro | iPad Air2 | iPad Air|iPad mini4...

2018-03-06 10:49:50 1020

原创 Android 的.jar和.aar

简要理解.aar包是Android studio下打包android工程中src、res、lib后生成的aar文件,.aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件。*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。如果你只是一个简单的类库那么使用生成的.jar文件即可;如果你的是一个UI库,包含一些自己写的控件

2018-03-06 10:39:42 158

原创 Android 的ARM架构和X86架构

简单理解arm 架构注重的是续航能力 x86 架构注重的是性能 在目前大部分的移动设备(智能手机,平板等)和大部分的移动终端(超市消费时候刷卡的 pos 机,ATM 等)都是 arm 架构的 cpu,为什么?最重要的原因就是因为续航能力。 而大部分的台式机和笔记本电脑,则是使用 x86 架构的 CPU(Intel 的 CPU),因为这些设备更需要的是高性能的运转和高效的运算,而对...

2018-03-05 15:13:05 10036

原创 iOS开发-静态库和动态库

1、什么是库?库是共享程序代码的方式,一般分为静态库和动态库。2、静态库与动态库的区别?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。3、iOS里静态库形式?.a和.framework4、iOS里动态库形式?.tbd(Xcode...

2018-02-28 11:00:31 204

原创 Homebrew的/usr/local/share/... is not writable.文件权限问题

执行sudo chown -R `whoami`:admin /usr/local/bin对于某些软件包,您可能还需要这样做sudo chown -R `whoami`:admin /usr/local/share

2018-02-26 09:36:18 2206

原创 NSDocumentDirectory NSDocumentationDirectory 的区别

NSDocumentDirectory 是指程序中对应的Documents路径,拥有读写的权限。NSDocumentionDirectory对应于程序中的Library/Documentation路径,这个路径是没有读写权限的

2017-04-12 11:34:38 1480

原创 在 MAC 上面创建 Cocos2d-x 的 iOS 项目

cocos2d是OC写的,cocos2dx是c++写的cocos2d只能在ios下运行,cocos2dx是跨平台的,ios和android平台都可以运行cocos2d是外国人搞的,cocos2dx是中国人搞的。cocos2dx是cocos2d的C++写法,但是游戏架构是一样的,都包含了精灵,导演,场景,动作等概念,他们是一脉相承的东西。你可以直接研究cocos2dx,没有什

2017-02-21 11:54:29 2692

原创 在Mac上面配置lua环境

一.下载和安装 lua 的资源包1. 下载最新版的lua资源包lua 资源下载,然后解压 2. 运行“终端”进入到该文件夹下,主要是 cd 文件夹名3.然后在终端输入“sudo make install”命令,会要求输入Password: 输入相应密码(你的密码),然后回车就自动安装了二.开发环境(IDE)的安装和配置IDE使用sub

2017-02-03 10:03:44 2317

原创 iOS10.0上线APP关于隐私的访问

今天上线新项目,被拒回来了两次,第一次发现是访问苹果的隐私时没有在info.plist文件里面加权限,添加之后再次上传,结果又被拒回来了,发现问题所在,在访问苹果的隐私数据时后面的string值不能为空,绝对不能置空,不然还是会被苹果拒回来的.

2016-10-27 20:12:07 300

原创 NSAssert和NSParameterAssert

哎,前段时间项目太忙,一直没时间更新博客,现在终于可以重新提笔继续写一下博客了,顺便整理一下最进使用的技术.        NSAssert是一个宏,整个内容是NSAssert(condition, desc, ...),condition是对一个表达式判断真假,如果这个表达式为真,程序继续运行,如果表达式为假,则抛出异常,后面的desc是自定义的异常描述.NSAssert()可以出现

2016-10-25 14:27:37 364

原创 iOS开发- 音频截取

#pragma mark - 截取音频方法- (void)captureSongAction{ CocoaSecurityResult * result = [CocoaSecurity md5:[[NSDate date] description]]; // 创建音频文件 NSArray *dirs = NSSearchPathForDirectoriesInDoma

2016-08-24 11:52:03 4247 1

原创 在iOS中使用字体文件.ttf(icon font,可缩放矢量图)

icon font是一种可缩放的矢量图形,它相比图片大大节省了空间,而且在屏幕显示上的效果很好,不需要再为了适配而准备两套图了。        首先你想要使用字体文件,需要有一套SVG图,这个图可以由美工提供,如果只给了png图,而你的公司又没有美工的话,自己转换吧,推荐一个可以将png图转换为SVG图的工具,就是inkscape。具体如何使用可以自行google。        现在你有

2016-07-21 10:48:10 5769

原创 UICollectionViewCell复用时修改子页面属性出现混乱的解决方法

这个方法就是给每一个cell一个唯一的标识符,正常情况下重用cell,给cell的一些子视图赋值时不会发生cell重用混乱问题,但是在修改cell子视图的属性的时候就会发生cell复用的混乱。下面是代码片段// 每次先从字典中根据IndexPath取出唯一标识符,避免复用NSString *identifier = [_cellDic objectForKey:[NSString strin

2016-07-21 09:53:19 2944 2

原创 基于iOS平台配置免费离线语音识别功能-OpenEars

用了半天时间弄明白了在iOS上如何配置语音识别功能,然后用半天时间写了一个demo,公司坑爹的是不用科大飞讯的语音识别,而使用的是OpenEars,用google查了一下最新的介绍文章是2013年的,OpenEars是一款国外比较主流的语音识别的第三方框架,全是英文文档(吐槽一下,做开发必须要学好英语啊).1.什么是OpenEars?        OpenEars是面向iOS平台的一个离

2016-07-06 16:37:35 4077 12

转载 开发时常用的数学函数

1、 三角函数   double sin (double);正弦   double cos (double);余弦   double tan (double);正切   2 、反三角函数   double asin (double); 结果介于[-PI/2, PI/2]   double acos (double); 结果介于[0, PI]   double atan

2016-07-05 09:53:15 295

原创 UIModalPresentationStyle即viewcontroller的显示方式

typedefNS_ENUM(NSInteger, UIModalPresentationStyle) {        UIModalPresentationFullScreen =0,//由下到上,全屏覆盖        UIModalPresentationPageSheet,//在portrait时是FullScreen,在landscape时和FormSheet模

2016-06-30 17:10:27 8259

原创 UIViewAutoresizing控件旋转时大小自动伸缩

UIView的autoresizingMask这个属性一般我们进行屏幕旋转的时候经常用到,它的值是一个枚举类型:typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { UIViewAutoresizingNone = 0, //不进行自动调整 UIViewAutoresizingFl

2016-06-08 14:20:28 456

原创 Xcode环境配置文件在Mac下的路径

查找文件绝对路径 ~/Library/MobileDevice/Provisioning Profiles

2016-05-25 17:50:08 856

转载 几个主要的git代码托管平台

说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有仓库要收费,如果你做的是一个开源项目,可以首选GitHub。下面推荐几个比较好的Git代码托管平台,这里我不做过多的说明和评价,也好让大家多看看,比较一下,找到自己的"真爱"。1、GitHub关于GItHub相信大家都有耳闻,我就不详细介绍了。GitH

2016-04-21 18:01:35 538

转载 SourceTree里GitFlow的使用

这几天看详细了一下Git Flow的模型介绍,感觉“很好很强大”,这个开发模型利用GIT的易于分支和合并的特点,能够比较容易地将开发、发布、部署、bug修复分隔开来。正准备在自己的团队内部推广使用,比较担心的是管理工作稍微繁琐一点。操作倒不复杂,只是需要头脑清醒,熟悉不同分支间的派生、合并关系和时机。没想到“正在瞌睡的时候送来了一个枕头”,正在使用的SourceTree工具天然支持

2016-04-21 17:44:20 15353 3

原创 iOS中的#ifdef,#define,#endif

一些接外包的公司里面,在应用程序开发过程中可能会经历TEST,UAT,PRODUCT三个阶段,那么在这个三个阶段可能每次调用的接口都不一样,这时就需要我们在PCH文件里面用宏定义不同时期需要的接口,那么#ifdef这个时候就有用处了。记住有多少个#ifdef就要有多少个#endif,每次切换接口的时候将不用的接口注释掉就可以了。#define HostEnvironment_PRODUCT

2016-04-18 11:28:57 1447

转载 Content Compression Resistance和Content Hugging

Intrinsic Content Size要理解内容压缩阻力和内容吸附性这两个概念,首先要理解内部内容尺寸(Intrinsic Content Size)这一概念。每个视图都有内容压缩阻力优先级(Content Compression Resistance Priority)和内容吸附性优先级(Content Hugging Priority)。但只有当视图定义了内部内容尺寸后,

2016-03-28 13:50:46 257

转载 密码算法详解——AES

0 AES简介  美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准。  根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128、AES-192和AES-256。本文主要对AES-128进行介绍,另外两种的思路基本一样,只是轮数会适当增加。1 算法流程  AE

2016-03-18 14:21:40 468

转载 Base64编码的原理理解

开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了。实际上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该。大概介绍一下Base64的相关内容,花几分钟时间就可以彻底理解它。文章下边贴了一个Base64的编解码器,方便阅读文章的同时来实验。  一. Base64编码由来  为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节

2016-03-17 10:48:40 257

原创 Unknown class ViewController in Interface Builder file问题解决

在最新的Xcode7.2中,如果你删除了ViewController文件,但是你没有删除Main.storyboard就会出现这个问题,但是当你删除了Main.storyboard时,运行程序会直接crash,原因就在这里删除掉里面这段后,运行就没错了

2016-03-16 11:01:21 1429

转载 iOS下KVO使用过程中的陷阱

KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应。网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里。这个例子作为扫盲入门还是可以的,但是当应用场景比较复杂时,里面的一些细节还是需要改进的,里面有多个地方存在crash的危险。本文旨在逐步递进深入地探讨出一种目前比较健壮稳定的KVO实现方案,弥补网上大部分

2016-03-15 17:43:05 268

转载 RSA算法原理(二)

六、密钥生成的步骤我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢?第一步,随机选择两个不相等的质数p和q。爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。)第二步,计算p和q的乘积n。爱丽丝就把61和53相乘。  n = 61×53 = 3233n的长度就是密钥长

2016-03-14 14:09:20 300

转载 RSA算法原理(一)

一、一点历史1976年以前,所有的加密方法都是同一种模式:  (1)甲方选择某一种加密规则,对信息进行加密;  (2)乙方使用同一种规则,对信息进行解密。由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symmetric-key algorithm)。这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存

2016-03-14 14:07:43 420

原创 移动端APP第一次登录和自动登录流程

App登陆保存数据流程App因为要实现自动登陆功能,所以必然要保存一些凭据,所以比较复杂。 App登陆要实现的功能: 密码不会明文存储,并且不能反编绎解密; 在服务器端可以控制App端的登陆有效性,防止攻击者拿到数据之后,可以长久地登陆; 用户如果密码没有泄露,不用修改密码就可以保证安全性; 可以区分不同类型的客户端安全性;比如Android用户受到攻击,只会让Andr

2016-03-14 11:11:31 19346 1

原创 iOS的NSString和NSDate之间的转换

日期之间比较可用以下方法    - (BOOL)isEqualToDate:(NSDate *)otherDate;    与otherDate比较,相同返回YES     - (NSDate *)earlierDate:(NSDate *)anotherDate;    与anotherDate比较,返回较早的那个日期     - (NSD

2016-03-13 17:48:54 274

原创 去除UITableView底部多余行及分割线

在viewDidLoad函数中加上此句代码:self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

2016-03-11 15:08:48 269

原创 几种常见加密算法初窥及如何选用加密算法

加密算法通常分为对称性加密算法和非对称性加密算法,对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。非对称算法与之不同,发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密,B向A发送消息时

2016-03-09 18:30:21 661

原创 iOS新方法systemFontOfSize: weight:

今天写项目时发现一个调整字体的新方法systemFontOfSize: weight:这个方法是iOS8.2之后出来的,但是iOS8.0的机器也能运行这个方法,只不过是苹果在8.2时将这个方法变为了共有API前一个就是调整字体大小,主要说说后一个,以下的这些都是填入权重值(即weight:后)UIFontWeightUltraLight  - 超细字体UIFontWeightT

2016-03-09 14:03:38 8142

转载 iOS程序员必备常用工具

常用工具Alfred —- 效率神器(类似Spotlight,但是功能强大,可以自定义工作流,没他我不行)Xcode —- 开发工具,谁都知道SourceTree -— git管理工具,可直观看到各版本,方便对比历史版本. 经常下载不到,可以复制下载链接用迅雷等工具下载。Syncro SVN Client — svn管理工具XtraFinder — Finder扩展,强大的窗口扩展Moom

2016-03-08 09:01:43 617

原创 HTTP的POST,GET,HEAD,PUT等请求方法

HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误    请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种:GET: 请求指定的页面信息,并返回实体主体。HEAD: 只请求页面的首部。POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。PUT: 从客户端向服务器传送的数据取代指定的文档的内容。DEL

2016-03-07 18:28:25 336

原创 iOS中copy和mutableCopy

如果对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝)。如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的

2016-03-07 18:09:25 215

空空如也

空空如也

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

TA关注的人

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