自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孤城的博客

iOS专栏

  • 博客(72)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 Elliot 的 博客搬家啦!!!

个人博客终于算是弄好了,CSDN上面一些觉得好的文章也会重新修改之后搬上去,不定期分享一些技术文章,欢迎指正Elliot的博客

2016-12-12 10:30:39 440

原创 @property的默认属性

property 的关键字主要分为四类:原子性nonatomic,atomic 在默认情况下,由编译器合成的方法会通过锁定机制确保其原子性(atomicity)。如果属性具备nonatomic 特质,则不使用同步锁。请注意,尽管没有名为“atomic”的特质(如果某属性不具备nonatomic特质,那它就是“原子的” ( atomic ),但是仍然可以在属性特质中写明这一点,编译器不会报错。若

2016-03-05 16:00:05 4166

原创 self表示的是当前类开辟内存的对象(文档里写的是当前的消息接受者 Return Value: The receiver.)

答疑:当在子类中调用super跳到父类中执行self时,其self实际指向的是子类(比如self.或者[self doSomething]等),当在子类里找不到这个属性或者方法时,会到父类中去中,如果还找不到,就会执行消息转发,转发失败则crash(实例方法中的self,是对象首地址;类方法中的self,是class)self表示的是当前类开辟内存的对象(文档里写的是当前的

2016-03-05 15:51:57 510

原创 执行一个函数的3个非主流方法:

先讲一下IMP函数入口://默认情况下,系统自带的IMP被定义为无参数无返回值的函数/*重新定义IMP,有参数,带返回值和不带返回值*/typedef void (*_VIMP) (id, SEL, ...);typedef id(*_IMP) (id, SEL, ...);void todoSomething(id yh_self, SEL name, ...){#pragma clan

2016-03-05 15:35:14 484

原创 封装测试一段代码的运行时间

封装测试一段代码的运行时间调用时非常方便,计算时间用了私有API在.m文件中#import "testTime.h"#import <objc/runtime.h>typedef void(^callback)(id result);//默认情况下,系统自带的IMP被定义为无参数无返回值的函数/*重新定义IMP,有参数,带返回值和不带返回值*/typedef void (*_VIMP) (i

2016-03-05 15:22:04 735

原创 CoreData的NSManagedObjectContext创建

如果想要对Coredata进行一系列的操作,就必须要先初始化NSManagedObjectContext,那么怎么得到Context呢?有两种方法:一种是通过UIManagedDocument获得:这种比较麻烦,代码如下self.document = [[UIManagedDocument alloc] initWithFileURL:(URL *)url];

2015-12-28 21:19:57 1483

翻译 iOS 之多线程CoreData

译:http://cutecoder.org/programming/multithreading-core-data-ios/不久前我根本没有意识到多线程coredata直到mac雪豹系统出来那天。但是随着iOS5中上下文context层次的出现和block使用的流行,多线程coredata变得触手可及。当我就职于Resonate时,我发现有一些项目应用是用多

2015-12-28 21:17:00 565

原创 iOS之UIcollectionView

首先UICollectionView的确非常强大,只要完成布局,可以变化出很多种风格的界面,那么这里只介绍最常用的界面布局,也就是网格界面布局那么直接上代码(都是纯代码完成界面布局):首先是UICollectionViewFlowLayout的初始化,作用是用来布局,在UICollectionView中纯代码的初始化方法是需要用到这个类来进行布局的UICollectionVie

2015-12-03 20:09:57 1513 2

原创 iOS之同步锁

iOS中的几种同步锁:1、OSSpinLock 自旋锁,性能最高的锁。原理很简单,就是一直 do while 忙等。它的缺点是当等待时会消耗大量 CPU 资源,所以它不适用于较长时间的任务。对于内存缓存的存取来说,它非常合适。2、dispatch_semaphore 是信号量,但当信号总量设为 1 时也可以当作锁来。在没有等待情况出现时,它的性能比 pthread_mutex 还要

2015-11-07 00:46:42 1220

原创 ios 常用的宏定义

#pragma mark - shortcuts#ifdef QA# define NSLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);#else# define NSLog(...){};#

2015-10-27 21:27:38 811

转载 深入理解runloop

RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。IndexRunLoop 的概念RunLoop 与线程的关系RunLoop 对外的接口RunLoop

2015-10-22 15:06:31 441

原创 iOS之代码规范

最近写代码感觉好乱,所以决定重构一遍自己的代码,记得以前自己看的一篇博客,写的非常nice,关于代码规范的,大概说一下其中的要点,对提升自己的代码可读性和逻辑的清晰度是非常有帮助的。原博客在这里:https://github.com/objc-zen/objc-zen-book#conditionals条件条件的主体部分应该写在{}里,来预防一些错误的发生,即使这个条件语句只有一行代码。因

2015-10-18 00:13:23 774

原创 iOS之时间

iOS之时间:1、NSDate时间戳,即代表某一个时间点2、NSCalendar提供了不同历法的时间信息,支持日历的计算3、NSDateFomatter在特定历法下的时间表示,基本用于不同历法的时间转换,默认是阳历NSDatecomponents是获取可读时间表示方式,比如“年”,“月”,“日”,“时”,“分”,“秒”,“周”等,和NSCalendar一起用,默认是阳历;还可以表示一个

2015-09-22 20:45:37 653

原创 ios 9 中 程序员需要注意的地方

一、iOS9中被移除的API或者枚举CoreImage CIImage.h : autoAdjustmentFilters —removedFondation NSKeyedArchiver.h :Removed -[NSKeyedArchiver setRequiresSecureCoding:]Removed -[NSKeyedUnarchiver setR

2015-09-22 20:44:16 1125 2

原创 iOS 之 socket

公司项目有用到socket,所以这几天学习了下,发现确实socket通信优势还是蛮大的,以前做的网络这块都是用的HTTP,也就是请求--响应这种应答式的方式。这种的话如果是比较小的项目还是蛮合适的,能够节省资源。但是比较大的项目的话就比较劣势了,而用socket就比较好,因为项目中网络请求比较多,时不时的需要发请求,socket的响应速度比HTTP要快,用户体验会要好很多。OK,讲一下sock

2015-08-29 18:59:20 1177

原创 ios 之 图片压缩 与剪切

有时候为了优化性能,减少内存,提升流畅度,需要对图片进行压缩或者剪切。。。在保证质量以及清晰度的情况下,对图片处理,对优化性能有很明显的提升。压缩的图片的步骤很简单:直接上代码://对图片尺寸进行压缩---(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize{ // Create a gra

2015-08-20 19:53:30 1103

原创 iOS 枚举加位操作

在iOS中常看到很多枚举加左移操作,那么为什么要这样写呢?我觉得这样写的好处有两个,其一是易读性更高,左移操作符前后两个数据可以分别代表不同的含义,其二就是为了和其他未操作符结合起来表示或的含义;举个简单的例子:typedef NS_OPTIONS(NSInteger, RefreshType) { RefreshTypePullDown =1 <<0, Refresh

2015-08-07 23:47:46 600

原创 iOS 之 block

今天无聊,又去mark了一下block,就当是复习了。。。好吧,随便写点东西,好吧,首先block的定义: int (^block)(int num); //定义 block block = ^(int num){ //block 方法体 return num+1; }; block(1); //调用block上面的很容易理解,就像标

2015-08-03 01:02:54 568

原创 iOS优化之路

持续更新。。。一,所有的对象创建都需要一定的时间,所以在创建对象的时候,能够复用就不要继续alloc创建对象,举例:-(NSString *)dateStringFromDate:(NSDate *)now{ NSDateFormatter* fmt = [[NSDateFormatter alloc] init]; fmt.dateStyle = kCFDateForma

2015-07-30 23:59:39 800

原创 iOS之贪吃蛇

iOS-demo系列之第二篇:贪吃蛇(哈哈,我在卖萌)好了现在讲一下基本思路:首先要把蛇画出来,蛇要有蛇头和蛇身,然后蛇身是跟着蛇头动的,也就是蛇头往哪里走,蛇身就往哪里走,那么我们通过一个数组来描述整个蛇,数组的第一个元素表示蛇头,最后一个元素表示蛇尾,当蛇头往前进一步的时候,数组最后一个元素删除,然后整个数组元素下移,最后数组的第一个元素添加蛇头的坐标,调用setNeedDis

2015-04-16 13:48:06 2201

原创 iOS之五子棋

接下来的几篇博客将我以前写的一些demo都挂上来。第一篇:五子棋哈哈,当然是单机版的,做着玩好了接下来讲一下思路:首先要画棋盘,然后就是画棋子通过touchBegan调用setNeedDisPlay,然后计算坐标,确保棋子落在棋盘上;最后就是判断输赢了,首先将整个棋盘作为一个数组存起来,全部置0,然后落子,白棋为1,黑棋为-1,通过米字型搜索,只要找到5颗棋子在一条线上,就结束。

2015-04-15 21:20:31 1822 2

原创 iOS之反射

iOS的反射机制就是根据字符串返回相应的class或者selector,然后你就可以做你想要做的事了,比如你抽象一个类,然后很多子类继承这个类,那么具体一个子类触发一个事件通过delegate 将类名传过来给这个抽象类,然后用另一个类导入这个抽象类,那么这么类就可以得到抽象类的具体子类属性,方法等等我的网络框架就是这样搭建的,首先建一个抽象请求类,然后具体接口请求子类继承这个抽象类,那么只要请

2015-04-15 01:45:45 698

原创 iOS之代码混淆

看了念茜的博客后,写了个demo,了解了怎么做代码混淆,其实原理很简单,就是用随机字符串替换类名、方法名,以做到混淆的作用,防止别人通过类名、方法名猜出其功能。教程就不介绍了,直接看这里demo在这里

2015-04-14 01:15:50 1476

原创 iOS之城市列表

有时候需要用到城市列表,作为地址选择,所以写了个demo。核心代码:#pragma mark - 获取城市数据-(void)getCityData{ NSString *path=[[NSBundle mainBundle] pathForResource:@"citydict"

2015-04-13 12:23:21 3540

原创 iOS之文本转换语音

iOS的AVFoundation库中提供了可以将文本转化成语音的方法,地图的语音导航能够用到。哈哈--!核心代码: AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc]init]; AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@

2015-04-13 11:36:30 512

原创 iOS之NSSortDescriptor及NSArray排序

iOS中有一个类可以按照属性来排序:@interface Person : NSObject@property NSString *firstName;@property NSString *lastName;@property NSNumber *age;@end@implementation Person- (NSString *)description { ret

2015-04-13 02:54:24 2362

原创 iOS 之 测试效率

面试时被问到NSArray和NSSet 哪个遍历更快?虽然知道理论,但是毕竟没有验证过,那么今天就来用代码验证一下。使用

2015-04-13 01:57:37 502

原创 iOS之tabBar

之前遇到一些tabBar的item颜色、图片问题,在这里记录一下:首先设置item的图片(选择时和未选择时)iOS7以前的方法不适用了,要用下面的方法 UITabBarItem *tabBarItem = [tabBar.tabBar.items objectAtIndex:0]; [(UITabBarItem *)[tabBar.tabBar.items objectAtInde

2015-04-07 23:25:24 612

原创 iOS之禁止横屏

iOS中禁止横屏,只要在Appdelegate中加入:- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ return UIInterfaceOrientationMaskPortrait;}就可以了

2015-04-07 18:24:08 580

原创 iOS之git提交项目

需要的工具1.安装Git  http://git-scm.com/download/mac 我下的是2.2.1版本的。2.终端 (自带的,请允许我卖个萌。。。)操作流程1.GitHub 上注册账号  https://github.com/ 去这上面注册下就行。2.配置 SSH key ①  defaults write com.apple.finde

2015-04-07 12:01:43 879

转载 iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

点击打开链接,下载代码--iOS多媒体概览随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内容进行一一介绍:音频音效音乐音频会话录音音频队列服务视频

2015-04-04 11:46:36 1024 3

原创 iOS之正则表达式(二)

上一篇已经基本讲了正则表达式的语法了。这篇就讲一些常用的正则表达式。哈哈,一下正则表达式来自百度百科吼吼吼1、验证用户名和密码:"^[a-zA-Z]\w{5,15}$"2、验证电话号码:"^(\\d{3,4}-)\\d{7,8}$"3、验证手机号码:"^1[3|4|5|7|8][0-9]\\d{8}$"4、验证身份证号:"\\d{14}[[0-9],0-9xX]"5、验证E

2015-04-03 14:20:17 484

原创 iOS之正则表达式(一)

以前经常要用到正则表达式,比如判断手机号码,邮箱格式等等,只知道在网上copy代码,不知其所以然,所以学习了一下正则表达式,今天来讲讲。。。1~什么是正则表达式正则表达式又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分。它可以迅速的用机简单的方式找到字符串的复杂控制。2~正则表达式的语法看一个

2015-04-03 01:45:53 664

原创 iOS 监听程序的生命周期

当你想要对程序的不同状态进行操作时,就要对程序的生命周期进行了解,比如当你点击home键时或者程序意外退出事,需要保存现场VIew以及一些数据,应该在哪里进行操作,程序开启时启动界面,或者再次进入时直接验证登录,等等今天就来讲一下iOS的程序生命周期,在什么时候调什么方法。在Appdelegate中已经写好了各种监听程序状态的回调方法,所以只要了解那些方法在哪里调用就可以 了:- (B

2015-03-23 15:00:09 2003

原创 Xcode process launch failed: timed out trying to launch app

当我把测试证书改为发布证书时,运行app报这个错误: process launch failed: timed out trying to launch app 所以查了一下怎么解决这个问题,把它记下来:首先clear一下你的工程;product——>clear然后把你的app删掉重新编译运行;确定你的证书有没有加对:target --> Build Settings --

2015-03-23 10:35:35 753

原创 UIWebView 加载html 及自适应高度

首先创建webView,设置属性: _webView=[[UIWebView alloc]init]; _webView.frame=CGRectMake(10, originY, Width-20, 140); _webView.scalesPageToFit = NO;//自动对页面进行缩放以适应屏幕 _webView.delegate=self; _

2015-03-23 09:30:07 4038

原创 iOS UIActionSheet的用法

UIActionSheet是和UIAlertView风格差不多的两个UI控件,不过他们的作用不同,UIAlertView用来作为警告框或者账号密码输入框,而UIActionSheet是用来选择的控件,比如微信朋友圈中的图片选择功能就是这个控件。还有就是UIAlertView的按钮在View中间,而UIActionSheet的按钮在底部,实现的功能基本都能互换,看个人需求使用哪个哈。看例子:

2015-03-20 16:53:53 5961

原创 iOS UIAlertView的用法

今天来讲一下UIAlertView的用法,真好今天有用到,就拿来总结一下。首先创建UIAlertView的对象,然后显示在界面上: UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"类别修改" message:@"修改什么?" delegate:nil cancelButtonTitle:@"取消" otherButto

2015-03-20 15:02:04 4403

原创 iOS 类别(catogry)和类扩展(extension)

在OC中,声明一个类是这样的(.h),然后创建私有的成员变量需要用到@private关键字:@interface ViewController : UIViewController { @private NSInteger _value;}但是,还有一个方法可以声明,那就是在(.m)类扩展中写@interface ViewController (){NSInteget

2015-03-19 17:06:35 1067

原创 ios 怎么修改 bundle identifier

有时候当你的工程已经创建了之后,你的工程bundle identifier的后面部分是灰色的,当你想要更改用来匹配你的测试证书的时候,发现居然不可以更改,灰色的部分根本去不掉,坑爹啊。。。(所以测试证书最好用通配符,哈哈)那么如果你想更改你的工程bundle identifier  怎么办呢?接下来教你怎么做:红色框框的那个就是bundle identifier ,你会

2015-03-18 17:20:26 13023

socketDemo

socket其实就是tcp连接,当客户端与服务端三次握手之后就一直连着,所以他的响应速度会比HTTP的应答式快

2015-08-29

github for Mac

The easiest way to use GitHub on Mac. github 的客户端

2015-03-26

iOS 人脸识别

基于openCV的人脸识别的demo,从 iPhone 的摄像头获取视频流,对它持续进行人脸检测,并在屏幕上标出来。当用户点击一个脸孔时,应用会尝试识别这个人。如果识别结果正确,用户必须点击 “Correct”。如果识别错误,用户必须选择正确的人名来纠正错误。我们的人脸识别器就会从错误中学习,变得越来越好。

2015-03-19

iOS 下拉刷新

很好用的iOS 下拉刷新demo,直接加入工程皆可以使用,并且易懂,很容易改成自己的风格

2015-03-17

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

TA关注的人

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