自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 解决使用Xcode的svn管理时频繁出现UserInterfaceState.xcuserstate 的冲突

    为了解决使用Xcode的svn管理时频繁出现UserInterfaceState.xcuserstate 的冲突,我们通过修改配置脚本,选择性忽略掉编译运行中出现的中间文件,比如UserInterfaceState。1,  首先在终端编辑vim  ~/.subversion/config文 件:按下esc 键盘键,输入  /global-ignores ,回车 ,按下 n 键几次,直到找到...

2018-04-02 10:36:14 1957

原创 ios9以上版本开始, 包括iphoneX的机型适配

机型适配:对于 iphoneX :statusBar 有44 (而 iphoneXX 的 statusBar 有20)navigationBar有44 tabBar有48bottonBar 有83 (非X的多了35)top Bar类型为translucent半透明:对ios11 而言:safe area 约束有效  

2018-01-25 16:12:22 1688

原创 注释生成文档工具——appledoc 与xcode自带的官方headerDoc比较后,选appledoc。

一开始尝试了官方的文档工具headerDoc,发现竟然不能直接 option+commad+/注释生成想要的文档内容,它的格式比较奇葩,需要将 /** 修改为 /*!  ;而且必须在 每个 .h文件的 @interface前面,为每个类多加一个/*!  @class 类名@abstract 详情         */否则,你在html网页上你看不到那个类名,也就找不

2018-01-16 10:45:53 770

原创 在父xib文件中复用子 xib的做法

1,2,在ZXSmallIconV.h文件中关联控件3,在ZXSmallIconV.m文件中添加ZXSmallIconV视图:@implementation ZXSmallIconV-(instancetype)initWithCoder:(NSCoder *)aDecoder {        if (self

2017-12-09 23:53:01 321 1

原创 对ios11 适配问题1——tableView的下拉刷新控件下移

在项目中许多地方用到了tableView,更新到ios11 后,发现MJFresh的下拉刷新控件下移了,原因是ios 11中 控制器的automaticallyAdjustsScrollViewInsets 被苹果废弃了,而且 控制器视图 多加了一个安全区域, 当tableView 超出安全区域 时,系统就会自动调整safeAreaInsets值,导致了adjustedContentIns

2017-11-30 18:16:43 1698

原创 TCP的三次握手和四次挥手,及抓包分析工具推荐

一,三次握手三次握手(three times handshake;three-way handshake)就是对每次发送的数据量跟踪方式 达成协议, 使数据包的发送和接收同步,根据所接收到的数据量 来确定 数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,按特定顺序排列数据包的序号,并需要这些包传送给目标机之后的确认消息。

2017-11-27 19:15:55 518

原创 设计模式:性能与对象访问(享元,代理) :对象状态(备忘录)

七、性能与对象访问20、享元模式:运用共享技术有效地支持大量细粒度的对象21、代理模式:为其它对象提供一种代理以控制对这个对象的访问。(远程代理,虚拟代理,保护代理,智能引用代理)代理设计当中,包含了存储在内存中的代理协议机制和在储存在磁盘当中的图像二值数据。八、对象状态22、备忘录:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,

2017-05-12 13:46:01 272

原创 设计模式:算法封装(模板方法,策略)

六、算法封装17、模板方法:定义一个操作中算法的骨架,而将些步骤延迟到子类中。模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构。 模板方法会调用5种类型的操作:(1)  对具体类或客户端类的具体操作(2)  对抽象类的具体操作(3)  抽象操作(4)  工厂方法(5)  钩子操作 18、策略模式: 定 义一系列的算法,把每一个算法封装起来, 并

2017-05-12 13:43:57 1459

原创 设计模式:行为扩展(访问者,装饰,责任链)

14、访问者模式:表示一个作用于某对象结构中的各元素的操作,它让我们可以在不改变各元素的前提下定义作用于这些元素的新操作。15、装饰模式:动态地给一个对象添加一些额外的职责。就扩展功能来说,装饰模式相比生成子类更为灵活。(范畴category)16、责任链:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间发生耦合,此模式将这些对象连成一条链,并沿着这条链传递

2017-05-12 13:41:55 380

转载 八大排序算法

八大排序算法概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。        当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序。   快速排序:是目前基于比较的内部排序中被

2017-05-12 13:34:32 255

原创 设计模式:抽象集合(组合,迭代器)

12、组合模式:将对象 组合成树形结构以表示“部分-整体”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。例子1:多级树形菜单。例子2:文件和文件夹目录13、迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示;(NSArray ,NSDictionary聚合体)(枚举,基于块的枚举,快速枚举(for …

2017-05-12 13:28:46 270

原创 设计模式:对象去耦(中介者,观察者)

为了严格遵循MVC,MVVM等架构模式,经常需要对象去耦。10、中介者模式:用一个对象来封装一系列对象的交互方式。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。11、观察者模式(发布-订阅模式):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。(1) 通知:  当然最后

2017-05-12 13:08:00 359

原创 设计模式:接口适配(适配器,桥接,外观)

7、适配器模式(包装器模式):将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(委托和块作为适配器)类适配器 与对象适配器区别:(1)  只针对单一的具体被适配者(Adaptee)类,把Adaptee适配到target;而对象适配器 可以适配多个Apatee 及其子类;(2)  易于重载Ada

2017-05-12 13:01:53 450

原创 设计模式:对象创建(原型,单例,简单工厂,工厂方法,抽象工厂,生成器)

1、原型模式:用copy方法创建同一个类型的对象2、单例模式 :单例设计模式确保在整个应用中 一个类仅有一个实例,并提供一个访问它的全局访问点。它通常采用懒加载的方式在第一次用到实例的时候再去创建它。如果单例对象要由多个线程访问,要让它线程安全,需要在静态实例的nil检查周围加入一些@synchronized() 程序块或者NSLock 实例。 如果其他属性需要保护,可以把它们

2017-05-12 12:54:50 498

原创 理解分类(category)和类扩展(extension),扩展或继承像UIViewController经常用的类的变量和方法

到底什么是分类category?什么是类扩展extension呢?他们分别用在什么场合,各有哪些不可被替代的特点呢?当学习熟悉,使用多了之后,你会发现这真的是很出色实用的两种扩展类。分类运用场景举例:想要收集每个页面的启动时间。问题1:项目中已经有上百个页面了,如果一个一个的加,浪费时间不说,以后增加了新页面,还需要添加方法。解决方法:我们可以发现页面都继承

2017-03-24 00:59:00 2140

原创 在Ubuntu Server 14.04 LTS下安装VMware Tools(解决与主机共享问题---Mac虚拟机

1、在MAC系统中开启ubuntu server虚拟机2、在vmware菜单项,选取虚拟机--> 安装VMware Tools3、mkdir /mnt/cdrom  #创建一个文件夹,以挂载cdrom4、mount /dev/cdrom /mnt/cdrom  #你可以先去/dev目录下查看有没有cdrom这个设备,这一步是挂载cdrom到/mnt/cdrom5、cd /mnt

2017-03-13 21:02:14 820

原创 使用CocoaPods 时卡在这 Setting up CocoaPods master repo 不动

那是因为 淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/)  需要的命令行:  $ gem sources -r  https://ruby.taobao.org/(移除旧版本的镜像,如果你不知道你电脑上目前用的是什么镜像,可用  $ gem

2017-03-06 20:16:44 276

原创 解决Eclipse中配置中没有server选项——tomcat配置中遇到的问题

解决Eclipse中配置中没有server选项——tomcat配置中遇到的问题在菜单中help 的选择 InstallNew Software add安装新软件 ,输入 name: Kepler ,repository 输入:http://download.eclipse.org/releases/kepler等待好久之后 出现多个选项,选择Web,XML,

2017-03-04 21:21:05 1505

转载 iOS应用数据存储的几种常用方式

应用沙盒1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒2)应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)应用沙盒的文件系统目录3)应用沙盒结构分析应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件Documen

2017-02-12 18:05:03 434

原创 文件路径类 字符串的各种截取方式,包括截取到文件名

NSString* index=@"/Users/1.zip";对路径进行截取的9种操作    NSLog(@"1=%@",[index lastPathComponent]);对应结果1=1.zip    NSLog(@"2=%@",[index stringByDeletingLastPathComponent]);对应结果 :去

2017-02-09 23:19:56 1830

原创 ios 在release时屏蔽掉NSlog()的几个方法

简单介绍以下几个宏:1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉,否则会编译出错。2) __FILE__ 宏在预编译时会替换成当前的源文件名3) __LINE__宏在预编译时会替换成当前的行号4) __FU

2017-02-02 12:30:33 2091

转载 iOS项目的完整重命名方法图文教程

前言:在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦。直接改项目名吧,XCODE又不会帮你改所有的名字。总是有很多文件、文件夹或者是项目设置的项。而且都是不能随便改的,有时候改着改着,编译不了。所以各位重命名项目时,记得先备份好一份哦。本文我会介绍一种方法,是我自己参考了很多资料得出的总结。为什么说是完整呢?因为改名之后,你不会再看到任何有关于之前的项目名字。本文会

2017-02-01 19:44:57 244

原创 统计ios项目的代码行数

1、打开Mac终端2、cd 进入要统计代码行数的项目根目录3、输入命令: find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.pch" ")" -print | xargs wc -l4、回车最后一行显示代码的总行数。

2017-01-24 19:47:46 225

原创 大多数情况下使用ARC内存自动管理机制,特殊情况采用MRC手动管理

Objective-C中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Reference Counting),分别提供对内存的手动和自动管理,来满足不同的需求。苹果公司是强推ARC的(后来xcode版本才出现这个服务功能)。1,/autoreleasepool 的使用 在MRC管理模式下,我们摒弃以前在代码中一个个

2017-01-23 19:21:43 202

转载 ios 文件 pch预编译文件的配置,提供编译速度

Xcode7 需要自己手动在工程中添加pch预编译文件。苹果为什么要这么做呢,原因可能是因为大家把大量的头文件和宏定义放到pch里边,导致编译时间过长。苹果去掉他可能是要加快编译时间增加用户体验。虽然失去了编程的便利性。不得不佩服苹果的以用户为中心的思考方式。更详细的讨论可以去Stackoverflow上去看http://stackoverflow.com/questions/241586

2017-01-22 19:36:50 1391

原创 ARC内存管理,防止内存泄漏,带retain、assign、strong、weak、nonatomic参数property和synthesize应用总结

ARC小结1.有了ARC,我们的代码可以清晰很多,你不再需要考虑什么时候retain或release对象。唯一需要考虑的是对象之间的关联,也就是哪个对象拥有哪个对象?2.ARC也有一些限制:1> 首先ARC只能工作于Objective-C对象,如果应用使用了Core Foundation或malloc()/free(),此时还是需要你来手动管理内存2> 此外

2017-01-22 18:30:10 352

原创 微博登录 授权导入sdk后运行程序崩溃NSInvalidArgumentException

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteMutableData wbsdk_base64EncodedString]: unrecognized selector sent to instance 0x78ee7e20'*** First thr

2017-01-19 00:01:04 398

转载 为ios工程添加 .dylib库 的方法,libz.dylib libsqlite3.dylib等等

转一个 Xcode 7 缺少 *.dylib库的解决方法Xcode7中 Link Binary With Libraries 没有 .dylib库,只能找到对应的 .tbd,但不能代替使用,通过查找资料,尝试后得到以下两种解决方法。方法1. (heqin测试可行)在项目Target中的Link Binary With Libraries 手动添加 首先点

2017-01-18 18:09:49 1593

转载 UIGraphicsBeginImageContext系列知识——缩放图像尺寸,方便上传至服务器

UIGraphicsBeginImageContext创建一个基于位图的上下文(context),并将其设置为当前上下文(context)。方法声明如下:void UIGraphicsBeginImageContext(CGSize size);参数size为新创建的位图上下文的大小。它同时是由UIGraphicsGetImageFromCurrentImag

2017-01-17 21:27:56 1081

转载 ios测试-使用XCTest进行单元测试

ios测试-使用XCTest进行单元测试(一)   在Objc.io #1的Testing View Controllers中讲解的就是单元测试的相关内容。本文说下如何通过Xcode 5中集成的XCTest框架进行简单的单元测试。什么是单元测试首先什么是单元测试?维基百科中的解释是:

2017-01-17 18:11:46 1878

原创 UITapGestureRecognizer手势识别之双击和单击结合

通过 单击和双击 对 图片视图 进行放大和 缩小的效果:#pragma mark - UITapGestureRecognizer- (void)UITapGestureRecognizerCreate{ UIImage* image =[UIImage imageNamed:@"1.png"]; //创建图像视图 _imageView =[[UIImageVie

2017-01-15 13:36:35 1864

原创 通过按钮 启动NSTimer定时器 控制视图view移动效果

创建启动和停止 定时器的按钮 ,和添加视图:#pragma mark - NSTimer定时器- (void)setTimeCreat{ //创建 启动定时器按钮 UIButton* btn =[UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame =CGRectMake(100, 100

2017-01-15 13:20:56 396

原创 UISlider 滑动条 按比例控制 UIProgressView 进度条 变化

创建进度条:- (void)UIProgressViewCreat{ _progressView =[[UIProgressView alloc] init]; //位置宽度可以设置,高度无法改变 _progressView.frame =CGRectMake(50, 200, 200, 40); //进度条的颜色 _progressView.

2017-01-15 13:05:39 2209

原创 分栏控制器UITabBarController管理多个视图控制器以及界面跳转

先创建一个UITabBarController 控制器,添加一下代码:SportViewController* sportVC =[[SportViewController alloc] init]; sportVC.title =@"aa"; CircleViewController* circleVC =[[CircleViewController alloc]

2017-01-14 22:22:40 588

原创 关于ios设备的旋转判断问题

UIDeviceOrientation 是ios设备当前旋转方向   ,这个参数可以取值但不能设置;UIInterfaceOrientation   是程序界面当前旋转方向  这个你可以设置;Portrait 表示 纵向 (屏幕直立),Landscape 表示 横向(屏幕横躺)下面举个例子 说明:- (BOOL)shouldAutorotateToInterfaceOr

2017-01-05 00:13:01 1083

空空如也

空空如也

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

TA关注的人

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