自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iCodeWoods

路漫漫其修远兮,吾将上下而求索

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

转载 使用CFStringTransform将汉字转换为拼音

之前做通讯录相关的一些App时,有一个比较常用的算法是将汉字转换成拼音。当时采用的做法是:将各个拼音段的首个汉字(按Unicode排序)做成两个数组,一个数组存拼音,另一个数组存拼音对应首个汉字的Unicode。如果要获取某个汉字的拼音,可以折半查找法找的对应拼音。最近无意间发现CFStringTransform这篇文章后,发现系统本身已经提供了一个这样的函数。CFStringTran

2016-10-17 14:22:01 601

转载 黑幕背后的Autorelease

我是前言Autorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[obj autorelease]来延迟内存的释放是一件简单自然的事,ARC下,我们甚至可以完全不知道Autorelease就能管理好内存。而在这背后,objc和编译器都帮我们做了哪些事呢,它们是如何协作来正确管理内存的呢?刨根问底,一起来探究下黑幕背后的Autorelease机制。Autorele

2016-09-06 16:12:01 645 2

转载 微软面试题:鸡蛋从第N层及以上的楼层落下会摔破

题目:有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。(假设每次摔落时,如果没有摔碎,则不会给鸡蛋带来损耗)形形色色的解答:在参考下面的解答之前,请你先仔细思考10分钟。看你给出的方案最小下落次数是多少。如果题目总分10分,看看自己

2016-08-26 11:35:57 4669 1

原创 面试题:OSI七层协议和TCP/IP四层协议

应用层:直接为用户的应用进程提供服务,如 HTTP、支持文件传输的FTP协议等 运输层:向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务。分用则是运输层把收到的信息分别交付给上面应用层中的相应的进程。运输层主要使用以下两种协议:1.传输控制协议TCP(数据传输的单位是报文段)2.用

2016-08-25 15:31:25 28131

原创 面试题:三次握手、四次握手内容整理

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到

2016-08-09 15:39:51 61104 5

转载 NSScanner类的基本用法

NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串。可以在创建NSScaner时指定它的string属性,然后scanner会按照你的要求从头到尾地扫描这个字符串的每个字符。 创建一个Scanner NSScanner是一个类族, NSScanner是其中公开的一类。通常,可以用scannerWithString:或localized

2016-08-05 10:47:53 394

原创 Runtime实例之-UIMenuController的使用

今天看公司代码的时候发现了一个很有意思的东西,就研究了下。如下图所示,点击某人的评论,弹出一个菜单,其中包括一些常用功能,如回复、复制、踩、分享等。这个弹出的菜单怎么实现呢?首先我们需要知道我们点击的这个评论是个什么东西。通过修改如下代码,我们可以很容易地知道它就是 commentLabel:// _commentLabel.backgroundColo

2016-07-27 12:03:30 530

转载 iOS开发UI篇-自定义CALayer

本文转载自点击打开链接一、第一种方式1.简单说明以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的DrawRect:方法,然后在该方法中画图。绘制图形的步骤:(1)获取上下文(2)绘制图形(3)渲染图形 如果在layer上画东西,与上面的过程类似。代码示例:

2016-07-20 15:10:42 354

转载 iOS开发UI篇-CALayer创建图层

本文转载自点击打开链接一、添加一个图层添加图层的步骤:1.创建layer2.设置layer的属性(设置了颜色,bounds才能显示出来)3.将layer添加到界面上(控制器view的layer上)  1 // 2 // YYViewController.m 3 // 01-创建一个简单的图层 4 // 5 // Created by

2016-07-20 14:52:47 394

转载 iOS开发UI篇-CALayer层的属性、隐式动画

本文转载自点击打开链接一、position和anchorPoint1.简单介绍CALayer有2个非常重要的属性:position和anchorPoint@property CGPoint position;用来设置CALayer在父层中的位置以父层的左上角为原点(0, 0) @property CGPoint anchorPoint

2016-07-20 14:37:56 625

转载 iOS开发UI篇-CALayer简介

本文转载自点击打开链接一、简单介绍在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层@pr

2016-07-20 14:22:08 382

转载 iOS核心动画-UIView封装动画

一、UIView动画(首尾)1.简单说明UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIViewbeginAnimations:nil context:nil]和[UIView commitAnimati

2016-07-20 12:43:06 530

转载 面试题:TCP协议与UDP协议的区别

本文转载自:点击打开链接TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同

2016-07-19 14:43:16 23962

转载 iOS-沙盒机制

第一、什么是沙盒IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒第二、保存内容所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等第三、作用iOS沙盒为程序运行提供了很好的安全保障第四、目录1、Documents目录:这个目录用于存储用户数据或其它应该定期备份的信息,苹果建议将程序中建立的或在程序中

2016-07-13 18:14:01 460

原创 升级OS X 10.11后CocoaPods的安装(问题与解决方法)

OS X更新到10.11后,CocoaPods的安装和以前有了点不同。以前安装cocoapods的时候用的是这句:$ sudo gem install cocoapods现在要改成这句:$ sudo gem install -n /usr/local/bin cocoapods然后就是正常的$ pod setup。然后就会出现Setting up Coc

2016-07-12 16:15:52 3642

原创 iOS-可变参数va_list、va_start、va_arg、va_end、NS_FORMAT_FUNCTION(1, 2)

其实这些都是C语音提供的处理变长参数的方法。在做网络请求的时候,我们几乎总是会需要组织参数。对于参数个数可变的情况,要怎么处理呢?或者说,怎么更优雅的处理呢?举个栗子:- (NSString *)appendBaseUrlWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2) { va_list args; va

2016-07-11 18:49:02 1486 2

转载 【WWDC2016 Session笔记】 iOS 10 UICollectionView新特性

本文转载自:点击打开链接前言关于 iOS 10 UICollectionView的新特性,主要还是体现在如下3个方面顺滑的滑动体验现在基本上人人都离不开手机,手机的app也每天都有人在用。一个app的好坏由它的用户体验决定。在可以滑动的视图里面,必须要更加丝滑柔顺才能获得用户的青睐。这些UICollectionView的新特性可以让你们的app比原来

2016-07-08 13:19:14 2113 1

原创 Swift-枚举、结构体、协议

用enum来创建枚举。不同的是,在Swift中,枚举可以包含方法。我们用扑克牌来举个栗子,Rank是对牌值的枚举,A,2~10,J,Q,K。enum Rank: Int { case Ace = 1, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King func simpleDesc

2016-07-08 10:39:08 1755

原创 网易新闻顶部效果

没想到有一天我竟然真的进入了我梦寐以求的网易,虽然只是个实习生~也没想到第一个正式的任务就是做个网易新闻顶部的效果。因为之前有好多面试官都问过我类似的问题,要么就是问网易新闻顶部的这个效果,要么就是问知乎日报顶部的那个效果,没想到现在我还真要做这个了说了半天废话,到底是啥效果?(下个iOS版的网易新闻不就知道了。。。)(和安卓版的不一样)我做的效果如下图:刚开始感觉

2016-07-07 20:44:36 803

转载 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

一、 简单工厂模式突然有一天,在梦里拥有了阿拉丁神灯.灯神说: "我可以给你创造一个女朋友哦"这时候我的心里...嘿嘿嘿..."但是只能满足你一个地理条件,目前只有三个选项: 四川, 河北, 山东. 你挑一个? " 灯神又说."那我选: 四川...或者..."没等我说完,嘭的一下,出来个一个火辣的川妹子...用

2016-07-07 12:20:19 580

原创 Swift-函数

使用 func 来声明一个函数。-> 后面的是函数的返回类型,举个栗子:func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)."}greet("Bob", day: "Tuesday") // 输出结果为 Hello Bob, today is Tuesday

2016-07-07 11:27:43 1549

转载 如何正确使用const,static,extern

本文转载自:点击打开链接一、const与宏的区别(面试题):const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。宏的好处:宏能定义一些函数,方法。 const不能

2016-05-27 16:58:28 437

原创 viewDidLoad被提前调用

今天写项目的时候发现了一个非常奇怪的问题,我一度认为可能是我的 Xcode 出了 bug。先来猜猜下面代码的执行顺序?这是一段非常常见的代码,很多 controller 都是这么写的。正常来说执行顺序肯定是 1、2、3、4 无疑。然而事实上,执行顺序却是:1、3、4、2。这就导致了一个问题:viewModel 请求不到数据,因为走到第 4 步的时候,view

2016-05-27 14:52:11 1128

转载 iOS 开发中的争议(一)类的成员变量应该如何定义?

本文转载自唐巧的博客类的成员变量应该如何定义?在 Objective-C 的语言的早期,类的私有成员变量是只能定义在 .h 的头文件里面的。像如下这样:@interface ViewController : UIViewController { @private NSInteger _value;}之后,苹果改进了 Objective-C,允许在

2016-05-27 12:11:26 1944

原创 pod install时出现错误"The dependency 'xxx' is not used in any concrete target"

今天更新了下系统,结果用CocoaPods下载第三方库的时候出现了错误,"The dependency 'xxx' is not used in any concrete target"。如下图所示:原来是因为更新了系统以后需要指明 target。解决办法:修改 podfile,如下图所示:在需要下载的库的前面和后面加上 target "xxx" do

2016-05-27 10:25:45 1163

转载 iOS核心动画-转场动画CATransition和组动画CAAnimationGroup

本文转载自:点击打开链接一、转场动画简单介绍CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果属性解析:type:动画过渡类型subtype:动画过渡方向

2016-05-16 14:32:50 599

转载 iOS核心动画-CABaseAnimation

本文转载自点击打开链接一、简单介绍CAPropertyAnimation的子类属性解析:fromValue:keyPath相应属性的初始值toValue:keyPath相应属性的结束值随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue如果fillMode=kCAFill

2016-05-16 12:21:52 1091

转载 iOS核心动画简介

本文转载自点击打开链接一、简单介绍Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。Core Animation是跨平台的,可以用在Mac OS X和iOS平台。Core Animation的动画执行过程都是在后台操作的,不会阻塞主

2016-05-16 11:54:53 495

转载 iOS核心动画-关键帧动画CAKeyframeAnimation

iOS开发UI篇—核心动画(关键帧动画)一、简单介绍是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值属性解析:values:就是上述的NSArra

2016-05-16 11:46:28 1586

原创 NSString不用strong而用copy修饰的原因

以前一直没有彻底弄明白这其中的原因,今天终于懂了,分享给还没有懂的人~直接上代码:@interface Test : NSObject@property (nonatomic, strong) NSString *str1;@property (nonatomic, copy) NSString *str2;@end#import #import "Test.h"in

2016-05-11 13:07:32 5211

原创 Xcode运行错误:failed to get the task for process XXX

昨天用adhoc的证书给项目打包,结果今天真机测试的时候出现了错误,Xcode不能运行项目了:原来是因为证书的缘故。打包时用了其它证书,开发的时候需要把证书换回原来的开发证书。如图所示,第一步选中 TARGETS,第二步选中 Build Settings,第三步把 Provisioning Profile 改成开发证书即可。

2016-05-11 11:39:06 1066

原创 三行代码实现iOS9新功能-SFSafariViewController

我们直接来看完整的代码:import UIKitimport SafariServicesclass ViewController: UIViewController { @IBAction func openWithSafariVC(sender: AnyObject) { let sfsVC = SFSafariViewController(URL: NSUR

2016-05-10 13:59:19 5421

原创 Swift-贝赛尔曲线画扇形、弧线、圆形、多边形——UIBezierPath实现App下载时的动画效果

上篇文章提到了使用贝赛尔曲线实现画图板(传送门),顿时就对贝赛尔曲线兴趣大增有木有。之所以接触贝赛尔曲线,多亏了师父。周五下班前师父给我留了个任务,让我周末回家研究研究 iPhone 手机下载 App 时的效果是怎么实现的(不知道效果的童鞋请看下图)如果所示,下载 App 的过程效果,就是 App 图标中间有一个顺时针旋转的圆圈。当一圈走完时 App 就下载完成了。刚给我交代这

2016-05-08 17:30:31 15087

原创 Swift-贝赛尔曲线实现画图板 && 截图保存到相册中

本文内容参考自 传送门。原文是用 OC 写的,我把它改成了 Swift 的。我们先来看看效果图:第一幅图是我们画了一个 “iOS” 的图像,第二幅图是我们点击保存成功,第三幅图是可以在相册中看到我们刚才画的图。感觉很不错有木有?接下来我们就来说说是怎么实现的。我们分两部分来说:上半部分的画图板和下半部分的控制区。上半部分的画图板是我们自定义的 view,

2016-05-07 17:39:45 3903

原创 copy和mutableCopy都是浅拷贝!!!

嗯,标题就是要这么醒目,不然没人看。虽然要追求醒目,但绝不是信口开河。所有系统容器类的copy或mutableCopy方法,都是浅拷贝!!!是的,你没有听错。所有系统容器类的copy或mutableCopy方法,都是浅拷贝!!!所有系统容器类的copy或mutableCopy方法,都是浅拷贝!!!所有系统容器类的copy或mutableCopy方法,都是浅拷贝!!!

2016-05-05 20:16:40 5167 16

原创 Swift-字典

原本我以为 Swift 中的字典和其它语言中的字典应该差不多,所以不打算单独写一篇关于字典的博客。可学习了之后我才发现 Swift 中的字典竟然有很多与众不同的地方。吓得我赶紧记录一下。。。和其它语言中一样的地方就没啥好说的了,我们直接来说它与众不同的地方。我们先拿数组来做比较。首先,在数组中肯定不能访问不存在的下标,否则会出现越界的错误,这点大家都知道。但是,字典却可

2016-05-05 12:14:50 495

原创 Swift-控制流

在 Swift 中,包裹条件和循环变量的括号可以省略,举个栗子:let individualScores = [75, 43, 103, 87, 12]var teamScore = 0for score in individualScores { // 循环语句的小括号可以省略 if score > 50 { // 条件语句的小括号可以省略 teamScore +

2016-05-05 10:54:06 520

原创 Swift-数组

用方括号[]来创建数组。最后一个元素后面可以有一个逗号(当然也可以没有啦)。初始化的方法有很多种:var array = [2, 3, 4, 5]var array1: Array = [2, 3, 4, 5]var array2: Array = [2, 3, 4, 5]var array3: [Int] = [2, 3, 4, 5]可以用初始化语法来创建一个空的数组:let

2016-05-03 18:11:45 663

原创 Swift-简单值

一直都觉得 Swift 有很多地方都没有 Objective-C 好(此时此刻仍是这么觉得),所以打心眼里不想学 Swift。但是师父已经开始逐步把我们公司的项目转成 Swift 了...于是我也决定(其实是为形势所迫),从今天起利用闲暇时间自学 Swift。如果有一天 Swift 真的完全替代了 OC,我会很难过。。。使用 let 声明常量,var 声明变量。比如声明一个 Int 类

2016-04-29 17:43:39 683

原创 SourceTree推送时一直提示输入密码

前两天把电脑里的东西全整没了(哭死),结果今天用 SourceTree 推送代码到 GitHub 时一直提示输入密码,并且不管输入多少次密码还是不行,始终提示要求输入密码。解决办法(以英文版SourceTree为例):打开该仓库,选择右上角的 Settings 设置按钮:选中远程仓库路径,点击 Edit 编辑按钮:首先选择 Host Type

2016-04-29 13:36:39 26608 4

空空如也

空空如也

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

TA关注的人

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