Learning iOS
文章平均质量分 81
Crayondeng
这个作者很懒,什么都没留下…
展开
-
ReactiveCocoa Weak-Strong Dance
RAC在应用中大量使用了block,由于Objective-C语言的内存管理是基于引用计数 的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)和@strongify(self)来避免强引用。RACObserver is a C macro that takes two parameters: an object and a key path原创 2014-03-05 20:10:50 · 5646 阅读 · 0 评论 -
iOS 通知中心 NSNotificationCenter & NSNotification
通知中心是 Foundation 框架的一个子系统,它向应用程序中注册为某个事件观察者的所有对象广播消息(即通知)。(从编程角度而言,它是 NSNotificationCenter 类的实例)。该事件可以是发生在应用程序中的任何事情,例如进入后台状态,或者用户开始在文本栏中键入。通知是告诉观察者,事件已经发生或即将发生,因此让观察者有机会以合适的方式响应。通过通知中心来传播通知,是增加应用程序对象原创 2013-07-18 19:37:31 · 22208 阅读 · 3 评论 -
iOS UIBezierPath类 介绍
使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状。 1.Bezier Path 基础 UIBezierPath对象是CGPathRef数据类型的封装。path如果是基于矢量形状的,都用直线和曲线段去创建。我们使用直原创 2013-09-04 20:34:41 · 35643 阅读 · 3 评论 -
iOS 使用UIBezierPath类实现随手画画板
在上一篇文章中我介绍了 UIBezierPath类 介绍 ,下面这篇文章介绍一下如何通过这个类实现一个简单的随手画画板的简单demo,功能包括:划线(可以调整线条粗细,颜色),撤销笔画,回撤笔画,清除画布,橡皮擦。当然也可以扩展功能下面简单讲解一下实现的过程:原创 2013-09-06 17:21:16 · 5586 阅读 · 6 评论 -
iOS CoreData (1)
下面开始学习一下CoreData。Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS)。Core Data 为数据变更管理、对象存储、对象读取恢复的功能提供了支持。 它可以使用SQLite作为持久化存储的类型。 它本身并不是一个数据库(这点很重要,比如,你可以使用Core Data来记录数据变更,管理数据,但并不能用它向文件内存储数据)。原创 2013-08-01 16:03:40 · 2125 阅读 · 0 评论 -
iOS 应用程序本地化
由于iPhone,iPad等苹果产品在全世界范围内的广泛流行,那么通过App Store下载应用程序的用户也将是来自世界范围的人们,所以开发者在开发过程中势必要考虑到不同语言环境下用户使用,好在iOS拥有健壮的本地化(localization)体系结构,使用它可以轻松的将应用程序翻译成多种语言。 多语言在应用程序中一般有两种做法:一、程序中提供给用户自己选择语言的机会;二、根据原创 2013-08-02 19:51:26 · 2991 阅读 · 0 评论 -
iOS GCD
一、GCD是异步执行任务的技术之一,一般将应用程序中记叙的线程管理用的代码在系统级中是实现。开发者只需要定义想要执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。二、多线程编程由于使用多线程的程序可以在某个线程和其他线程之间反复多次进行上下文切换,因此看上去就好像一个CPU核能够并行的执行多个线程一样,而且在具有多个CPU核的情况下原创 2013-07-26 16:33:35 · 3862 阅读 · 2 评论 -
iOS CoreData(2)
上面一篇文章介绍了coredata的有关基本概念,由于大部分是参考别人文章中的内容,所以感觉有点虚,而且估计也是比较难以理解,下面这篇文章通俗一点说说学习coredata后的一些理解,然后给出一个简单的demo,有错漏的地方,欢迎读者指正。其实与coredata有关的有几个概念:数据表 --–> Entity (You usually define entities in原创 2013-08-02 15:53:42 · 2994 阅读 · 1 评论 -
iOS SQLite3
SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效。SQLite3使得不必将每个对象都加到内存中。这篇文章将简单介绍一下如何使用SQLite3.注:大部分SQLite3函数返回值为SQLITE_OK为成功,否则返回SQLITE_ERROR (1)打开数据库(若数据库文件不存在,则创建之) SQLITE_API int sqlite3_open(constchar原创 2013-07-31 20:27:31 · 2395 阅读 · 0 评论 -
iOS UILocalNotification本地通知
介绍一下iOS下如何使用UILocalNotification进行应用程序的本地通知,基本上大部分的app都会有这个功能。 我们在设置的通知中心中可以自定义本地通知的三种形式(分别是在ios6和ios7): 下面给出简单代码看看如何使用UILocalNotification:(1)本地通知中心发送消息:UILo原创 2013-10-15 19:10:37 · 17557 阅读 · 1 评论 -
iOS 两种方法实现左右滑动出现侧边菜单栏 slide view
现在很多的APP中都有slide view,左右滑动出现侧边菜单栏的功能,Weico这个应用就有。网上有很多第三方的类库实现了这种效果,其实自己代码写的话也是很简单的,下面我将介绍两种方法实现slide view。---- 一种是用第三方类库IIViewDeckController这个类库实现的效果比起其他的都好,另一种是自己代码实现这种效果,效果还ok。实现方法一(使用第三方库原创 2013-06-08 17:10:52 · 26900 阅读 · 71 评论 -
Objective-C初学者速查表
转载 2013-11-15 18:26:50 · 1821 阅读 · 0 评论 -
ReactiveCocoa 关于在arm64真机运行的问题解决
在 arm64 真机(如:iPhone5s等)测试 ReactiveCocoa 的时候,突然出现了一些关于 :Symbol(s) not found for architecture arm64的报错,花了一点时间找出了问题的解决,下面记录一下:1、由于在 iPhone5s 等 arm64 设备运行的时候,Build Settings 中的 Architectures 默认都是:Stand原创 2014-03-05 19:36:11 · 3954 阅读 · 0 评论 -
CocoaPods用法 -- iOS程序的包依赖管理
一、安装CocoaPods网上给出的安装方式:$ sudo gem install cocoapods$ pod setup但很坑的是,我在终端中运行时发现,无法使用sudosudo: /etc/sudoers is owned by uid 502, should be 0sudo: no valid sudoers sources found, quitting弄了好久原创 2014-03-02 17:02:56 · 3656 阅读 · 3 评论 -
objc.io系列文章中文翻译汇总
目前进度:33/57 (已翻译文章/总文章数)2014/2/25 更新:我建了一个Objc.io 的翻译交流群:202279066,如果大家感兴趣,愿意在学习的同时翻译这些文章来帮助其他开发者,欢迎加入我们。申请时请注明认领翻译的文章名称+完成时间+微博昵称。#1 Lighter View Controllers 打造轻量化的视图控制器 (5/5 已翻译)Intro转载 2014-03-02 09:29:44 · 5827 阅读 · 1 评论 -
Objective-c nil, Nil, NULL和NSNull的区别
在OC中可能经常会遇到 nil,Nil,NULL和NSNull,下面分析一下之间的区别:SymbolValueMeaningNULL(void *)0literal null value for C pointersnil(id)0literal null value for Objective-C objec原创 2014-02-07 00:15:10 · 12513 阅读 · 0 评论 -
Objective-C 浅析Copy语法
在OC语法中,提供了Copy语法(Copy + MutableCopy)用于对象的拷贝。其中很容易混淆的是浅拷贝和深拷贝。所谓浅拷贝,即是地址拷贝,并不产生新的对象,而是对原对象的引用计数值加1。而深拷贝,即是对象拷贝,产生新的对象副本,计数器为1。下面通过一个例子来分析一下这个比较容易乱的Copy:一、对于NSString/NSMutableString; NSArray/NSMut原创 2014-02-05 16:58:32 · 1692 阅读 · 0 评论 -
Objective-C 实现Equality and Hashing
Implementing Equality and Hashingby Mike Ash Welcome back to a late edition of Friday Q&A. WWDC pushed the schedule back one week, but it's finally time for another one. This week, I'm going to d翻译 2014-01-27 22:12:12 · 4207 阅读 · 1 评论 -
iOS 触摸事件之双指先后触摸问题的解决
问题情景的引入:在一个画板程序中,我定义只能用一个手指的时候,才可以画线,当有两个手指的时候是不可以进行绘画的。问题初解决:①那么最简单的我们会想到,禁止多点触摸不就可以了吗?答:不行。假如我们禁止了多点触摸,那么当我们两个手指一起触摸的时候,触摸事件的委托方法- (void) touchesBegan:(NSSet *) touches withEvent:(UIEv原创 2013-11-27 21:24:22 · 8335 阅读 · 1 评论 -
iOS 正则表达式 NSRegularExpression
最近遇到一个需要进行字符串匹配的问题,我就想到用正则表达式来解决,通过ios中的NSRegularExpression这个类就可以帮助我们实现这个。问题陈述:现在我要对一个语句进行匹配: "[self.label setText: @\"hello world\";" 这个语句其实就是设置一个label的内容,其中label字符串中的内容可以任意。那么根据这个字符串,写出对应的正则表原创 2013-11-27 20:17:14 · 21304 阅读 · 1 评论 -
iOS 内存管理(一)
引用计数式内存管理的思考方式:自己生成的对象,自己所持有。非自己生成的对象,自己也可以持有。不再需要自己持有的对象时释放。非自己持有的对象无法释放。对象操作Objective-c方法生成并持有对象alloc/new/copy/mutableCopy方法持有对象retain方法原创 2013-07-27 20:45:53 · 2209 阅读 · 0 评论 -
iOS 沙盒(sandbox)机制和文件操作
本文参看了 http://www.uml.org.cn/mobiledev/201209211.asp#1 这篇文章中的介绍,尊重原著。1、IOS沙盒机制IOS应用程序只能在本应用程序中创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。1.1、每个应用程序都有自己的存储空间1原创 2013-07-30 15:47:23 · 5737 阅读 · 0 评论 -
iOS 学习Block
一、截获自动变量值 //截获自动变量值 int val = 132; const char *fmt = "val = %d\n"; /* 在blocks中,block表达式使用的是在它声明之前的自动变量val。 block表达式截获所使用的自动变量的值,即保存了该自动变量的瞬间值,原创 2013-07-22 20:11:57 · 2375 阅读 · 0 评论 -
iOS UIAlertView和UIActionSheet的用法
这篇文章主要学习alertview 和 actionsheet这两个控件的使用。Action Sheet是从底部弹出,上面有2个或者2个以上的选项供用户选择,Alert就是一个警告框,上面有1个或者1个以上的按钮供用户进行选择。(说明:其实这两个不是控件,而是ios 中的两个类,这里暂且这么叫吧。这2个类定义了2种不同类型的用于和用户交互的弹出框)首先,使用这两个类要使用到其代理,UIAl原创 2013-04-05 16:58:16 · 3383 阅读 · 0 评论 -
iOS Blocks简介
iOS4引入了一个新特性,支持代码块的使用, 这将从根本上改变你的编程方式。代码块是对C语言的一个扩展,因此在Objective-C中完全支持。如果你学过Ruby,Python或Lisp编程 语言,那么你肯定知道代码块的强大之处。简单的说,你可以通过代码块封装一组代码语句并将其当作一个对象。代码块的使用是一种新的编码风格,可以让你运用 自如的使用iOS4中新增API。 我们先来看两个转载 2013-04-27 19:34:55 · 1754 阅读 · 0 评论 -
iOS 4种JSON数据解析方法详解
在网络中数据的传输很多格式都是JSON或是XML,之前的博文已经介绍过XML,这篇介绍JSON数据。在对JSON数据进行解析过程中大致有四种方法可供选择,包括原生的NSJSONSerialization,TouchJson,JSONKit,SBJon;其中后三种方法都要导入第三方类库。(在使用第三方类库过程中,如果项目是支持ARC的话,而这些类库文件不支持ARC特性的话,就会遇到ARC问题保错原创 2013-04-17 22:01:33 · 5776 阅读 · 0 评论 -
iOS 在登陆注册中使用keychain进行简单的存取用户名和密码
在进行简单的登陆注册界面设计中往往都会遇到用户名和密码的存取设计问题,在此暂不讨论其他解决方法,现在介绍一种相对简单的方式--keychain。苹果已经有现成的类封装好了keychain,KeychainItemWrapper.h和KeychainItemWrapper.m文件,可以在GenericKeychain实例里找到。但是现在只是进行简单的存取用户名和密码操作,只需要自己写一个类;原创 2013-03-28 17:23:12 · 2621 阅读 · 0 评论 -
iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作
UIGestureRecognizer 类该类拥有一系列子类,每个子类都用于识别某类指定的手势。它们是:UITapGestureRecognizer – “轻击”手势。可以配置为“单击”和“连击”的识别。UIPinchGestureRecognizer –“捏合”手势。该手势通常用于缩放视图或改变可视组件的大小。UIPanGestureRecognizer – “平移”手势。识别拖拽或原创 2013-04-04 23:56:08 · 11499 阅读 · 0 评论 -
iOS NSDateFormatter日期时间格式处理的用法
最近在做新浪rss新闻xml解析过程中,遇到一个时间字符串转换的问题。问题是:Wed, 3 Apr 2013 04:11:02 GMT (这个数据是在xml文件中获取的)要在这个字符串中截取出04:11:02。 注意:其中的GMT 要特别注意北京时间是GMT+8:00所以这个实际在网页页面显示的时间是 要在这个时间的基础上加上8小数的,也即是Wed, 3 Apr 2013 1原创 2013-04-03 13:03:45 · 22655 阅读 · 1 评论 -
iOS UIWebView浏览器控件的简单实现
下面简单介绍一个内置在应用的浏览器控件---UIWebView实现这个控件要实现UIWebViewDelegate协议中的几个方法。UIWebView委托方法//UIWebView委托方法,开始加载一个url时候调用此方法-(void)webViewDidStartLoad:(UIWebView *)webView{ [self.activityIndicatorView sta原创 2013-03-31 16:01:54 · 2453 阅读 · 0 评论 -
iOS 通过URL网络获取XML数据的两种方式
下面简单介绍如何通过url获取xml的两种方式。第一种方式相对简单,使用NSData的构造函数dataWithContentsOfURL;不多解释,直接上代码咯。 NSURL *url = [NSURL URLWithString:@"http://222.73.161.212/ispace2/servlet/com.lemon.xml.XmlAction"];原创 2013-03-29 23:53:25 · 5442 阅读 · 0 评论 -
iOS ASMediaFocusManager 缩略图预览
在做新浪微博客户端过程中,微博内容缩略图片放大显示的问题,在网上意外找到一个第三方库,很适合做这个工作,经过一点点研究,大概可以使用了。 第三方库 ASMediaFocusManager 可通过简单的触摸操作来放大图像并自动以动画的方式填充全屏,再次触摸图像或者点击Done即可恢复原始大小。下载地址是:https://github.com/autresphere/ASMediaF原创 2013-05-02 23:43:06 · 2783 阅读 · 1 评论 -
iOS UITableViewCell重用问题
在写sina 微博界面的过程中使用到了cell,那么就是在cell上添加一些控件,但是由于每条微博的内容都是不同的,所以在显示的过程中,出现了内容重叠的问题,其实就是UITableViewCell重用机制的问题。- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath原创 2013-05-09 19:03:43 · 7819 阅读 · 1 评论 -
iOS KVO & KVC
键值观察:值更改时通知观察者键值观察(Key-value observing,或简称 KVO)允许对象观察另一个对象的属性。该属性值改变时,会通知观察对象。它了解新值以及旧值;如果观察的属性为对多的关系(例如数组),它也要了解哪个包含的对象发生了改变。KVO 有助于使应用程序变得更内聚,保持模型、控制器和视图层中的对象与改变同步。与 NSNotificationCent原创 2013-07-19 11:06:45 · 15539 阅读 · 7 评论 -
iOS 委托模式
委托Delegate是协议的一种,通过一种@protocol的方式实现,顾名思义,就是委托他人帮自己去做什么事。也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实现什么方法。简单的总结了一下自己用到的委托的作用有两个,一个是传值,一个是传事件。1.所谓传值经常用在B类要把自己的一个数据或者对象传给A类,让A类去展示或者处理。(这个作用在两个View视图原创 2013-07-18 16:19:14 · 5079 阅读 · 0 评论 -
iOS 扩展机制category与associative
在写新浪微博的时候,要处理点击微博图片放大的问题,这里我采用的处理是使用category和associative扩展机制为UIImageview扩展添加一个方法和一个属性,这个方法是处理点击图片放大,而这个属性就是这个图片的下载链接地址URL。下面稍微解说一下这两个扩展机制:category和associative作为objective-c 扩展机制的两个特性,category可以原创 2013-06-18 20:09:06 · 5685 阅读 · 0 评论 -
iOS 开源项目list
UI界面类项目:Panoramagl —— 720全景展示Panorama viewer library for iPhone, iPad and iPod touch MBProgressHUD —— 进度指示一种优雅的,半透明的进度显示效果。同时还提供了其他附加功能,比如显示完成信息并淡出。iCarousel —— 效果很酷的分页排列转载 2013-06-07 18:16:22 · 3421 阅读 · 0 评论 -
iOS开发 frame 与 bounds 的区别与关系
frame和bounds是UIView中的两个属性(property)。frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)-(CGRect)frame{ return CGRectMake(self.frame.origin.x,self.fra转载 2013-06-09 16:49:35 · 1975 阅读 · 0 评论 -
iOS 第三方类库之MBProgressHUD
github链接地址MBProgressHUD是一个开源的第三方类库实现了很多种样式的提示框,类似Activity indicator,使用上简单、方便,并且可以对显示的内容进行自定义,功能很强大,很多项目中都有使用到。 MBProgressHUD is an iOS drop-in class that displays a translucent HUD with an in原创 2013-05-09 20:35:17 · 3893 阅读 · 0 评论 -
iOS TableViewCell 动态调整高度
在写sina 微博的显示微博内容时,用到cell进行显示,那么就要考虑到不同微博内容导致的cell高度问题。在微博显示的内容中包括了文字和图片,那么就要计算文字部分的高度和图片部分的高度。这篇博文就记录一下如何处理cell高度的动态调整问题吧!一、传统的方法在tableview的delegate的设置高度的方法中进行设置- (CGFloat)tableView:(UITableView *原创 2013-05-09 11:00:54 · 9504 阅读 · 1 评论