自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iOS UIView、UIImageView旋转产生边界锯齿的完美解决方法

在项目中需要取相册的第一张照片展示出来,并且UIImageView需要一个白色的2pt宽、6pt圆角的边框,并且需要对imageView进行一定角度的旋转。如果仅仅对imageView进行旋转的话会导致view边缘锯齿化,经查阅资料,有这样的解决办法:解决办法如果是imageView的话,可以对UIImage进行重绘:- (UIImage *)antiAlias{ CGFloat bor

2017-09-26 09:11:03 5467

原创 Unicode学习笔记

什么是Unicode由于计算机只能对数字进行处理,当储存字符的时候,其实在计算机内部存储的依然是数字,只不过这些数字每一个都对应了一个字符,这样就是对字符进行了一次编码。在Unicode编码出现之前,就有许多不同的字符编码,这些字符编码中每个字符与数字的对应关系都不尽相同。因此:一个同样的数字在不同的字符编码中就可能表示着不同的字符,或者相同的字符在不同的字符编码中对应着不同的数字,在使用不同字符

2017-02-23 23:02:08 885

原创 APFS简要指南(Apple File System Guide)

APFS是为苹果设备创建的下一代的文件系统(代替HFS+)。可以在iOS、macOS、tvOS、watchOS全平台运行。APFS在构建的时候是以加密为主要特征的,它可以充分利用SSD存储和Flash闪存。说起APFS,就免不了提到HFS+HFS+HFS+是苹果公司为替代他们的分层文件系统(HFS)而开发的一种文件系统。它被用在运行macOS的电脑上。HFS+也被称为 macOS Extended(

2017-02-18 14:15:34 10550

转载 采用Tagged Pointer技术的NSTaggedPointerString

原文链接:采用Tagged Pointer的字符串Tagged Pointer是一个能够提升性能、节省内存的有趣的技术。在OS X 10.10中,NSString就采用了这项技术,现在让我们来看看该技术的实现过程。本话题由Ken Ferry提出。回顾对象在内存中是对齐的,它们的地址总是指针大小的整数倍,通常为16的倍数。对象指针是一个64位的整数,而为了对齐,一些位将永

2016-10-25 18:00:32 2452

原创 block学习笔记

介绍block对象是C语言的语法和运行时特性。它与标准的C函数很相似,但是在运行代码的同时它还可以包含栈中或堆中的变量。因此,block对象可以在执行时保留一些可以用来影响运行行为的状态(数据)。你可以使用block对象去组成可以被传递给API、可选的储存、或是被多线程使用的函数表达式。block在回调是尤其有用,因为block同时包含了用来执行的代码和在执行时需要的数据。因为Objective-C

2016-10-24 09:47:55 834

原创 Head first HTML&CSS学习笔记

通过来告诉浏览器关于web页面的信息。总出现在浏览器窗口的顶部。是你看到的东西。css在html文件中嵌套:xxx使用元素创建一个超文本链接,链接到另一个web页面;元素的内容会成为web页面中可单击的文本;href属性告诉浏览器链接的目标文件。H5支持定制数据属性,允许为新属性构造定制的属性名。href:“超文本引用”(hypertext reference),就是互联网或者你的计算机上的一个资

2016-10-06 17:56:34 2309

原创 error: tool 'xcodebuild' requires Xcode的解决办法

报错信息:select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance 原因:是因为前一阵重新下载了一个XCode,为了标识两个XCode,

2016-09-06 10:23:56 12611

转载 Git 中 tag 的用法(打tag、删除tag等)

标签(tag)可以针对某一时间点的版本做标记,常用于版本发布。列出标签// 在控制台打印出当前仓库的所有标签$ git tag // 搜索符合模式的标签$ git tag -l ‘v0.1.*’ 打标签git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。

2016-09-06 09:49:33 54569

转载 iOS 开发 向项目中添加 pch 文件

在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问。是一个预编译文件。首先说一下pch的作用:1.存放一些全局的宏(整个项目中都用得上的宏)2.用来包含一些全部的头文件(整个项目中都用得上的头文件)3.能自动打开或者关闭

2016-09-01 10:15:31 444

原创 UICollectionView使用(WWDC session学习笔记)

UICollectionView由3部分View组成:cell,supplementView,decorateView,前两个是由数据驱动的,后一个仅仅是展示一个view,不由数据驱动不要向collectionViewCell的view中添加子视图,因为这可能会被backgroundView或selectedBackGroundView给遮挡住,应该向contentView中添加UICollec

2016-08-28 23:28:58 906

翻译 iOS中的block(block编程官方文档翻译)

介绍block对象是C语言的语法和运行时特性。它与标准的C函数很相似,但是在运行代码的同时它还可以包含栈中或堆中的变量。因此,block对象可以在执行时保留一些可以用来影响运行行为的状态(数据)。你可以使用block对象去组成可以被传递给API、可选的储存、或是被多线程使用的函数表达式。block在回调是尤其有用,因为block同时包含了用来执行的代码和在执行时需要的数据。因为Objective-C

2016-08-28 23:24:44 934

原创 对可修改类型的属性使用copy特性

前两天去网易面试的时候面试官在问内存管理特性的时候问到了这样一个问题:能不能对一个是可变类型的属性采用copy特性,我当时的回答是不能,面试官问为什么不能,当时没有想到原因,但是因为自己遇到过把一个NSMutableArray的属性声明为copy特性时出现了bug,所以知道这样做是不行的,但是具体为什么不行没有深入去了解。今天详细做了一个测试发现了这么做不可行的原因,废话不多说,先上代码:NSStr

2016-08-21 21:35:36 1625 2

原创 pod install与pod update的区别

1. 当你需要向向你的项目中安装新的pod库时使用`pod install`。即使之前你已经有一个Podfile并且执行了pod install,即使你是在向一个已经使用了CocoaPods的项目中添加或移除pod库。2.只有当你想要更新pod库的版本时才使用pod update。

2016-08-15 00:52:52 16637

原创 一行代码为UILabel添加长按复制功能

一行代码为UILabel添加长按复制功能

2016-08-07 15:33:42 15679 4

原创 initialize方法与load方法的区别

我开通了自己的个人博客,刚开始搞,界面会显得比较乱,等我慢慢摸索改良一下吧,哈哈。 博客地址:www.shorewb.com 也可以直接点击下面的链接 shorewb的技术博客最近在读《Objective-C程序设计》的时候,看到了书中说: 程序开始执行时,它向所有的类发送initialize调用方法。该消息只向某个类发送一次,并且在向该类发送其他消息之前。如果存在一个类及其相关的子类,则

2016-07-31 22:01:26 1289

原创 UILabel换行与多行文字显示处理

最近在项目中频繁遇到显示多少行文字的需求,有的需求是在什么情况下都只显示1行文字,有的需求是要求显示多少行文字由服务器端控制,有的需求是展示全部文字,有的需求是要最多展示5行文字,不过他们有一个共同的特点就是未显示全的文字用 … 来代替,遇到了这么多与文字显示行数有关的需求,因此我把UILabel处理显示行数的做了一下总结,下面来具体展示一下需求1 只显示一行文字只显示一行文字其实很好处理,在刚开始

2016-07-31 22:00:32 25605

原创 Cocoa pod使用Tips

使用cocoapod导入了第三方库,在代码中引入第三方库的头文件,编译器提示找不到相应的文件。解决方法:1. 选择工程的 Target -> Build Settings 菜单,找到\”User Header Search Paths\”设置项,新增一个值"$(PODS_ROOT)",并且选择\”recursive\”,这样xcode就会在项目目录中递归搜索文件(我是通过这种方法解决的问题)2

2016-07-21 15:38:26 550

原创 performSelector系列方法编译器警告-Warc-performSelector-leaks

如果selector是在运行时才确定的,performSelector时,若先把selector保存起来,等到某事件发生后再调用,相当于在动态绑定之上再使用动态绑定,不过这是编译器不知道要执行的selector是什么,因为这必须到了运行时才能欧确定,使用这种特性的代价是,如果在ARC下编译代码,编译器会发生如下的警告: warning:performSelector may cause a leak

2016-07-18 10:37:18 4212

原创 Xcode使用

没有scheme Close Xcode and delete the folder .xcuserdatad from within .xcodeproj/xcuserdata/. Then restart Xcode, the schemes should re-appear.2.

2016-07-16 16:46:33 417

原创 读取缓存文件,判断文件是否过期

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);NSString *cachesDirectory = [paths objectAtIndex:0];NSString *archivePath = [cachesDirectory

2016-07-16 16:44:46 2337

原创 weakSelf相关知识

一.语法相关1. _weak默认strong,可选weak。strong下不管成员变量还是property,每次使用指针指向一个对象,等于自动调用retain(), 并对旧对象调用release(),所以设为nil等于release。只要某个对象被任一strong指针指向,那么它将不会被销毁,否则立即释放,不用等runloop结束。所有strong指针变量不需要在dealloc中手动设为nil,

2016-07-16 16:43:08 1020

原创 static inline内联函数

static inline内联函数在项目的代码里看到了static inline这样的函数,不太明白是用来干什么用的,所以查了一下,将结果写在下面。内联函数有些类似于宏内联函数的代码会被直接嵌入在它被调用的地方,调用几次就嵌入几次,没有使用call指令。这样省去了函数调用时的一些额外开销,比如保存和恢复函数返回地址等,可以加快速度。不过调用次数多的话,会使可执行文件变大,这样会降低速度。相比起宏来说

2016-07-16 16:21:41 556

转载 深入理解 CocoaPods

CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。CocoaPods 背后的理念主要体现在两个方面。首先,在工程中引入第三方代码会涉及到许多内容。针对 Objective-C 初级开发者来说,工程文件的配置会让人很

2016-06-01 20:29:08 1112

原创 git pull时遇到git pull error :error: remote ref is at but expected问题的解决办法

今天在拉取项目新版本的代码时,遇到了一个问题,对项目最新的代码进行git pull,报错:error: cannot lock ref 'xxx': ref xxx is at (一个commitID) but expected (另一个commitID)一开始我以为是分支出现了问题,索性就把该分支给删掉了,删掉之后重新由远程分支创建本地分支,一番操作之后发现根本没有用,还是会报这个错。一番搜索与

2016-06-01 20:24:13 6379

原创 4.21 学习笔记

判断对象是否为nil libc++abi.dylib: terminate_handler unexpectedly错误 layoutSubviews什么时候被调用

2016-04-21 22:49:24 331

原创 Effective Objective-C学习笔记

所有OC对象总是分配在堆空间中,而不是分配在栈上。不能在栈中分配OC对象。如果someString变量指向分配在堆里的某个内存,其中含有一个NSString对象,如果再创建一个变量,令其指向同一地址,那么不会拷贝该对象,只是这两个变量会同时指向此对象。分配在堆中的内存必须直接管理,分配在栈上用于保存变量的内存则会在其栈帧弹出时自动清理。OC的运行时环境把堆内存管理这部分工作抽象为一套内存管理架

2016-04-06 14:32:57 689

原创 SDWebImage无法加载png图像

今天在写Dota2英雄介绍的客户端时,遇到了一个问题,我用SDWebImage来获取网络上的图片,设置到tableViewCell中的imageview去,运行时报错

2016-03-26 21:32:26 3350

原创 图片轮播器占用内存过大问题的解决办法

经常在博客、简书等地方看见别人写的图片轮播器,前几天我自己也写了一个,加载了27张美腿的图片(没办法,美腿控嘛,哈哈哈),用三个imageView来循环展示,成功是成功了,但是内存占用十分之大,达到了300+M之多,在跑模拟器的时候看比例占得也不多(毕竟MBP有8G内存呢,300M,撒撒水啦),但是要是在iPhone上运行,300M就是一个大数字了。谷歌之后找到了解决的办法,可能还是解决的不够好,因

2016-03-26 11:34:29 2282

原创 iOS网络编程学习笔记---1

运行循环iOS应用中的每个线程最多只有一个运行循环。可以没有,见第四条。对于主线程,运行循环会自动开启,在应用委托的applicationDidFinishLaunchingWithOption:方法调用之后就可以访问了。辅助线程必须显示的运行自己的运行循环。在辅助线程中开始运行循环之前,你至少要添加一个输入源或者定时器,否则运行循环就会立即退出。线程的运行循环不是必须的。运行循环会从两类

2016-03-24 21:16:15 631

原创 EXC_BAD_ACCESS(code=1问题的解决办法

今天在仿写微博APP的时候遇到了一个问题,编译运行,下拉刷新微博,一切正常,再次下拉刷新,程序就崩了,Xcode报错,EXC_BAD_ACCESS(code=1,花了好长时间才发现是哪里错了,现在在这里总结一些可能会到这这个错误产生的问题。当Xcode报错的时候会定位到某一行,但是却没有详细的信息,比如我的程序中,代码就定位到了 params[@"since_id"] = firstStatus.

2016-03-15 15:18:14 27682

原创 pod install之后没有反应的解决办法

今天在使用cocoapod 加载AFNetworking的时候,pod install回车或是pod update回车,过好长时间都没有反应,但是网络显示已经下载了几十兆的东西,奇怪文件夹里却什么都没有,通过在网上搜多发现,pod install之后没有反应或者是过很长一段时间才有反应是因为这个命令被墙了,要替换用这个命令:pod install --verbose --no-repo-update

2016-03-13 17:13:47 4655

原创 遇到Undefined symbols for architecture x86_64问题的解决方法

一般碰到这种情况是因为工程中有两份一样的文件,把其中一份删除就可以了,如果你不是在实际的文件夹中放了两份文件的话,那么在删除的时候就要注意不要点move to trash,而是要move reference。

2016-03-13 16:23:23 2078

翻译 View Programming Guide for iOS 学习笔记_3

定义一个自定义的视图如果系统的视图不能满足你的需要,你可以自定义一个视图。在自定义视图里你可以完全控制你的应用程序的内容的外观和与内容交互的处理方式。注意如果你使用OpenGL ES来绘制。你应该使用GLK类而你搜UIView的子类。更多关于如何让使用OpenGL ES绘制的信息,查看OpenGL ES Programming Guide for iOS.实现一个自定义视图你需要做的事自定义视图的职

2016-03-06 20:33:57 613

原创 Xcode插件安装与管理

最近在看一个视频的时候发现老师写代码de的速度好快好快,我要敲半天的代码他几乎瞬间就写完了,后来发现其实是因为这个老师使用了Xcode插件。在唐巧老师的《iOS开发进阶》这本书里边我发现了Xcode插件这一章,于是比猫画虎的安装了一些插件。下面我分享一下我的安装过程。

2016-03-05 21:54:32 610

翻译 View Programming Guide for iOS 学习笔记_2

这几天刚回学校,事情比较多,对文档的翻译进度慢了一些,最近我在想要不要把我写的这些东西放在github上,但是我还不太会用,等几天学学怎么用然后把这些东西放在github上好了。今天学习到如何写注释的方法,注释应该是注释接下来的代码是干什么的,把这一段代码的实现的功能写下来,而不是对每一条语句进行说明。Views因为view对象是用户与你的应用程序交互的主要途径,所以view有许多职责。下面是其中的

2016-02-29 23:06:18 634

原创 对Objective-C的runtime的一些理解

首先copy某位博主的写的一段关于runtime的介绍:runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API。 在我们平时编写的OC代码中, 程序运行过程时, 其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工作者 。这算是从技术层介绍了runtime,下面我结合阅读官方文档谈谈自己对runtime的理解:简要介绍因为OC会

2016-02-27 17:56:19 1160

转载 __weak与__block修饰符到底有什么区别 + 属性的特性

源文章网址:http://www.bubuko.com/infodetail-782508.htmlAPI Reference对__block变量修饰符有如下几处解释

2016-02-26 16:25:35 2019

原创 读苹果官方文档的一点小收获

将一个Label居中在一个View里 NSString* exampleString = [NSString stringWithFormat:@"This is an example string"];CGSize stringSize = [noContentString sizeWithFont:[UIFont systemFontOfSize:18]];CGRect labelSiz

2016-02-26 08:59:09 614

翻译 View Programming Guide for iOS 学习笔记_1

这是View Programming Guide for iOS 学习笔记的第二部分,在翻译这部分的时候我照抄了文档里的代码,因为实在markdown编辑器里写的,没有代码补全功能,这让我有时间一遍照抄一边思考,看着这些官方代码有了一点点体会,这些体会我会稍后写在下一篇博客里。

2016-02-25 23:09:16 569

翻译 View Programming Guide for iOS 学习笔记_0

最近开始看苹果的官方文档,第一篇看的是这个View Programming Guide for iOS,因为我不爱看官方文档,全都是英语,有点头疼,但是这个东西确实不看不可的,所以我逼着自己把这篇Guide翻译一遍,顺便提高一下自己阅读文档的能力。还没有翻译完,有更新我会贴上来的。因为我的翻译能力有限,所以希望大家多多批评指正。

2016-02-24 10:53:15 983

空空如也

空空如也

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

TA关注的人

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