
Objective-C
文章平均质量分 75
dqjyong
这个作者很懒,什么都没留下…
展开
-
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
Apple官方的文档为生成一个UIImage对象提供了两种方法:1. imageNamed,其参数为图片的名字;2. imageWithContentsOfFile,其参数也是图片文件的路径。那么两种有什么区别吗?肯定是有的。根据Apple的官方文档:imageNamed: 这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图原创 2014-05-25 17:39:38 · 40728 阅读 · 2 评论 -
IOS UIKIT框架类之窗口和视图架构介绍!
窗口和视图窗口和视图是为iPhone应用程序构造用户界面的可视组件。窗口为内容显示提供背景平台,而视图负责绝大部分的内容描画,并负责响应用户的交互。虽然本章讨论的概念和窗口及视图都相关联,但是讨论过程更加关注视图,因为视图对系统更为重要。视图对iPhone应用程序是如此的重要,以至于在一个章节中讨论视图的所有方面是不可能的。本章将关注窗口和视图的基本属性、各个属性之间的关系、以及在转载 2012-09-12 11:52:41 · 1524 阅读 · 0 评论 -
iOS 高级内存管理:比较__unsafe_unretain、__strong、__weak、__autoreleasing
在前面分析了nomantic、copy、retain等属性之后,在教新的XCode版本中,我们又经常会看到__unsafe_unretain、__strong、__weak、__autoreleasing这四种属性,那么他们有什么用呢?__unsafe_unretain、__strong、__weak、__autoreleasing是出现在 LLVM 编译器 3.0版本之后。而__unsa原创 2012-07-12 23:23:29 · 12096 阅读 · 0 评论 -
iOS/iPhone 程序文件目录结构以及启动流程
要想清晰的理解IOS应用程序的启动过程,毫无疑问需要深入了解一下ios应用程序的文件系统。一个ios应用程序都有一个属于自己沙盒(sandbox),应用沙盒就是文件系统目录,并且与文件系统的其他部分隔离。应用必须待在自己的沙盒里,应用既不能访问其他应用的沙盒,其他应用也不能访问该沙盒。 应用沙盒包含多个目录: 1.应用程序包(applicat原创 2012-08-05 16:01:36 · 17063 阅读 · 2 评论 -
IOS 四种保存数据的方式!
在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题。将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好。下面介绍一下数据保存的方式:1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告原创 2012-06-16 21:25:58 · 20909 阅读 · 3 评论 -
IOS UIKIT框架类之视图动画和坐标系介绍!
Core Animation基础Core Animation利用了硬件加速和架构上的优化来实现快速渲染和实时动画。当视图的drawRect:方法首次被调用时,层会将描画的结果捕捉到一个位图中,并在随后的重画中尽可能使用这个缓存的位图,以避免调用开销很大的drawRect:方法。这个过程使Core Animation得以优化合成操作,取得期望的性能。Core Animation把和视转载 2012-09-12 11:50:31 · 1650 阅读 · 0 评论 -
如何绑定或者解除绑定微博和人人帐号
OAuth2.0验证得到了广泛的应用,其中微博和人人都是用了这种认证方式。在IOS开发微博和人人的客户端时,首先要解决的问题就是微博的绑定和解除绑定。绑定比较容易解决,按照官方提供的OAuth流程即可实现。而解除绑定比较麻烦,需要考虑IOS的网络请求过程的缓存机制。 IOS网络请求一般是用NSURLRequest类,而IOS采用NSURLRequest请求时会帮你主动记录下原创 2012-07-30 11:31:20 · 7395 阅读 · 2 评论 -
iOS NSDictionary、NSData、JSON数据类型相互转换
iOS经常需要用到数据类型的转换,下面列举一下常用类型的转换。1.NSDictionary类型转换为NSData类型://NSDictionary -> NSData:NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"balance",原创 2012-08-13 23:30:08 · 59111 阅读 · 0 评论 -
区分nil Nil NULL和NSNill(Objective C语言)
nil Nil NULL和NSNill作为Objective C语言中出现比较频繁的字眼,有时候不知道如何到底该选择哪一个?下面我们来详细分析这几个关键字的区别。 nil在OC中的通过jump to Definition指向的定义为: #ifndef nil #define nil NULL #endif /*原创 2012-06-15 23:59:42 · 4904 阅读 · 0 评论 -
iOS 并行编程之 GCD使用
GCD是Grand Central Dispatch的缩写。其包含了语言特性、runtime libraries以及提供系统级、综合提高的系统增强功能在iOS和OSX 系统上多核的硬件来支持并行执行代码。GCD会负责创建线程和调度执行你写的功能代码。系统直接提供线程管理,比应用添加线程更加高效,因此使用GCD能够带来很多好处,例如使用简单、而且更加高效,允许你同步或者一部执行任意的代码block。原创 2012-11-12 16:39:05 · 3960 阅读 · 0 评论 -
NSDate和NSString之间的转换,(可以转时区的哈)
NSString和NSDate互转需要用到NSDateFormatter,设置一下timezone和format即可,直接上代码 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSTimeZone *timeZone = [NSTimeZone localTimeZone]; [format转载 2014-04-01 10:33:13 · 5102 阅读 · 0 评论 -
EXC_BAD_ACCESS异常 调试过程
当我的代码是这样编写时:在button出现touch操作时,button的action会执行下面的代码, dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSString *leftId = @"face_id";原创 2014-03-29 22:55:48 · 12643 阅读 · 0 评论 -
iOS7隐藏状态栏 status Bar
iOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIViewController的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的hide/show状态的方法也跟其他版本的不一样了。 在iOS7以前的版本,hide/show是通过以下代码实现[[UIApplication sharedApplication] setStatusBarHidd原创 2014-01-06 00:03:23 · 30409 阅读 · 0 评论 -
iOS快速更新drawRect方法
If you are an advanced user of drawRect on your ipop*, you will know that of course drawRect will not actually run until "all processing is finished." setNeedsDisplay flags a view as invalidated and t转载 2013-12-08 20:39:08 · 5683 阅读 · 0 评论 -
iOS中如何添加自定义的字体
iOS中中文字体种类特别的少,有时为了增加字体的艺术效果需要添加自定义的字体。其实在iOS中添加自定义字体很简单,4步就可搞定: 1,在Info.plist中加入名为UIAppFonts的array 2,把*.ttf 和*.otf文件加入到项目当中,比如说是MyScript.ttf 3,把文件名添加到UIAppFonts数组里面 4,在程序中用下面的原创 2013-08-27 22:14:08 · 1448 阅读 · 0 评论 -
IOS学习之IOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
我们看看NSFileManager如何使用。包括创建文件,目录,删除,遍历目录等。1、在Documents里创建目录创建一个叫test的目录,先找到Documents的目录, NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)转载 2013-06-22 21:56:07 · 1942 阅读 · 0 评论 -
IOS学习之IOS沙盒(sandbox)机制和文件操作(二)
我们看看如何获取应用程序沙盒目录。包括真机的沙盒的目录。1、获取程序的Home目录 NSString *homeDirectory = NSHomeDirectory(); NSLog(@"path:%@", homeDirectory);打印结果:2012-06-17 14:00:06.098 IosSandbox转载 2013-06-22 21:55:36 · 1361 阅读 · 0 评论 -
IOS学习之IOS沙盒(sandbox)机制和文件操作(一)
1、IOS沙盒机制IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。1.1、每个应用程序都有自己的存储空间1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。转载 2013-06-22 21:53:45 · 2174 阅读 · 0 评论 -
iOS UITextField 使用全解
UITextField 座位用户交互的一个必备使用的控件,其使用频率较高。定义一个UITextField 及其基本的属性: UITextField _telNum = [[UITextField alloc] init]; _telNum.clearsOnBeginEditing = NO;//在输入时不清除原来输入的文字 _telNum.delegate = s原创 2012-11-12 14:37:39 · 4919 阅读 · 1 评论 -
内存分配大全——windows 、IOS系统下C++\objective C内存分配
malloca/alloca: 内存分配函数,与malloc,calloc,realloc类似。但是注意一个重要的区别,_alloca是在栈(stack)上申请空间,用完马上就释放。 alloca包含在头文件malloc.h中,在某些系统中会宏定义成_alloca使用。 注意: 1.在调用 alloca的函数返回的时候, 它分配的内存会自动释放。也就是说, 用原创 2012-08-09 14:03:29 · 3328 阅读 · 0 评论 -
IT程序员不得不知道的程序出现的错误类型
即使是最牛叉的程序员,他们在程序开发过程的各个阶段也可能发生错误,但是他们有着丰富的解决错误的能力。下面简要分析这些错误。 我们可以将程序设计中的错误分成五类:第一类,编译期错误。何谓编译, 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语原创 2012-08-09 13:45:43 · 2142 阅读 · 0 评论 -
iOS NSNotification的使用
如果在一个类中想要执行另一个类中的方法可以使用通知1.创建一个通知对象:使用notificationWithName:object: 或者 notificationWithName:object:userInfo: NSNotification* notification = [NSNotification notificationWithName:kImageNotificat原创 2012-06-20 11:12:25 · 114534 阅读 · 2 评论 -
iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别!
在iOS开发中经常使用NSInteger和NSUInteger,而在其他的类似于C++的语言中,我们经常使用的是int、unsigned int。我们知道iOS也可以使用g++编译器,那么它们之间是否有什么联系呢? 从NSUInteger和NSInteger的定义文件中 NSObjCRuntime.h发现有这样的语句:#if __LP64__ || (TARGET_OS_EM原创 2012-07-03 18:19:19 · 11452 阅读 · 1 评论 -
KVO/KVC 实现机理分析
Objective-C里面的Key-Value Observing (KVO)机制,非常不错,可以很好的减少浇水代码。关于KVO的学习,可以参考文章:《Key-Value Observing快速入门》:http://www.cocoadev.cn/Objective-C/Key-Value-Observing-Quick-Start-cn.aspKVO概念: KVO是cocoa中的转载 2012-06-19 23:16:36 · 5432 阅读 · 0 评论 -
iOS NSOperationQueue的使用
NSInvocation用来呈现objective-C静态消息,即将动作转换为一个对象。NSInvocation对象用来在对象或者应用程序间存储以及转发消息。主要应用于NSTimee对象或者是分布式对象系统中。一个NSInvocation对象包含了所有的OC消息的成分:目标、selector、参数以及返回值。每一个参数能够直接设定,而且当一个NSInvocation对象调度时返回值是自动设定的。同原创 2012-06-19 23:01:44 · 3043 阅读 · 0 评论 -
IOS 多线程使用
不管是mac os X还是IOS都支持多个层次的多线程编程。创建一个低层的线程是相对简单的但是不是很安全的,创建一个高层的线程比较复杂但是比较安全,省去了多线程的同步操作。但是不管什么情况,你必须有一个函数或者方法来作为创建线程的主入口以及必须用一个现有的线程活动来开始线程。下面为了使用线程技术具有更加一般性,展示基本的线程创建过程。 线程创建继承了一些默认的属性,这主要决定于你使原创 2012-06-19 20:39:58 · 4351 阅读 · 0 评论 -
IOS如何根据URL下载内容
In order to download the contents of a URL, an application needs to provide a delegate object that, at a minimum, implements the following delegate methods: connection:didReceiveResponse:, connection:翻译 2012-06-19 17:48:34 · 5895 阅读 · 0 评论 -
Objective C实现多继承!
我们都知道objective C不能像C++一样支持多继承,但是在OC的使用经常会碰到需要使用多继承的情况。例如,ClassA中有methodA,ClassB中methodB,而现在需要使用这两个类中的方法。如何按照C++的编程思路,毫无疑问采用多继承就搞定了,在OC就需要动动脑子了。 其实我们在学习设计模式的时候知道,多继承的效率不高,而且采用组合的模式可以完全代替继承模式。那原创 2012-06-17 22:01:50 · 19250 阅读 · 1 评论 -
Objective-C的self.用法的一些总结
关于什么时间用self. , 其实是和Obj-c的存取方法有关, 不过网上很多人也都这么解答的, 那它为什么和存取方法有关? 怎么有关的? 并没有多少人回答出来. 同时关于内存管理的内容, 请大家看旺财勇士的Objective-C内存管理总结~CC专版 , 有些东西我就不多解释了.进入正题, 我们经常会在官方文档里看到这样的代码:MyClass.h@interface MyClas转载 2012-06-18 00:01:12 · 754 阅读 · 0 评论 -
Objective C定义私有方法
我们有时会遇到,希望某个类的方法不能被它的继承类所继承。这在C++是很好实现,直接将该方法定义为private即可。但是在正规的OC语法,你不能对一个类的方法定义为private,那么如何实现这种功能呢? 上帝给你关上一道门,同时给你打开一扇窗。OC同样也是如此,当OC不能将类定义为私有时,还提供了另外一种方法:类别,在现有类的基础上添加新方法的方式。下面用代码来具体实现私有方法。原创 2012-06-17 23:33:59 · 7011 阅读 · 0 评论 -
正确处理 Memory Warning
IPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息。收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露。app收到Memory Warning后会调用:UIApplication::didReceiveMemoryWarning -> UIApplicationDelegate::applic转载 2012-06-17 23:52:14 · 1315 阅读 · 0 评论 -
IOS对象复制问题
某次面试,面试官写出一段代码,问我这段代码有什么问题吗:具体代码如下:@implementation Person- (void)setName:(NSString*)newName {self.name = newName;}@end咋看之下,这不就是定义Person类中的属性age的setter方法嘛。但是跟我们的书写习惯有点不一样,感觉怪怪的!还是先写出我们的原创 2012-06-17 21:22:13 · 2318 阅读 · 1 评论 -
Objective-C中变量采用@property的各个属性值的含义
我们在OC中定义变量,可以自己来定义变量的setter方法来设置变量值,用getter方法来获取变量值。但是当变量数量增多时,还采用手动添加setter/getter方法来操作变量,就会使得程序代码量大大增加。幸好从OC 2.0开始,我们能让系统自动生成设置变量值的方法或获取变量值的方法,即系统会自动为我们生成setter/getter方法。这中功能减少了代码量,让我们有更多的精力放在程序的业务逻原创 2012-06-16 12:55:06 · 24020 阅读 · 0 评论 -
iOS UITableView的使用大全
首先、对UITableView进行讲解,下面有对它进行实际的应用UITableView 显示大型内容的列表 单行,多列 垂直滚动,没有水平滚动 大量的数据集 性能强大,而且普遍存在于iPhone的应用程序中TableVie转载 2012-07-04 22:21:08 · 7698 阅读 · 0 评论 -
Objective-C id类型实现原理
在 Objective-C中id类型的对象可以转换为任何一种对象,有点类似与void*指针类型的作用。下面简要介绍一下id类型。 id标志符:通用对象类型。id类型是一个独特的数据类型,可以转换为任何数据类型,即id类型的变量可以存放任何数据类型的对象。这是为什么呢?还是从OC的内部实现机制上来分析吧! 在内部处理上,id类型被定义为指向对象的指针,这可以原创 2012-06-15 22:50:20 · 6111 阅读 · 0 评论 -
iOS崩溃日志crash logs追踪以及调试方法
在IOS程序开发和以及在真机运行程序时,经常会遇到程序crash的情况,从哪里可以获得crash的日志文件,以便更好的分析程序崩溃的原因,让应用更加完美。 在真机运行程序出现crash状况时,机器会自动产生log文件,它包含了在程序crash之前正在做什么的信息。在pc上对手机或者ipad设备进行同步,就可以将这些日志文件存储在电脑中。下面时如何找到这些日志文件:1.同步你原创 2012-08-02 22:34:42 · 15372 阅读 · 0 评论 -
IOS 消息推送原理及实现总结(续)---- Provider实现
在IOS 消息推送原理及实现总结中讲述了消息推送的原理及实现总结,但并未讲到Provider服务端及Client App客户端的实现,但我在这里只是简单讲述Provider服务端(JAVA实现)步骤如下: 一、 制作Provider服务端所需要的*.p12文件:在IOS 消息推送原理及实现总结的图2-8中所展示的密钥、证书,我们并没有使用到它,那么为什么要展示出来呢,转载 2012-07-16 17:03:33 · 2678 阅读 · 0 评论 -
IOS 消息推送原理及其实现
一、消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1-11、 Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);2、 APNS:A转载 2012-07-16 17:01:41 · 1970 阅读 · 0 评论 -
libxml2.dylb 导致<libxml/tree.h> 老是找不到头文件
添加了libxml2.dylb的framework ,结果还是引用不了, 老是提示找不到头文件。这个问题其实比较容易解决,但是XCode的版本问题确实让开发者头疼。在Xcode4,2之后,可以在添加了libxml2.dylb之后,点击左上角的project,然后进行Build Settings(这里不管是Project还是targets都行),找到Search Paths选项卡,其下原创 2012-08-04 16:56:45 · 19815 阅读 · 0 评论 -
iOS NSFileHandle使用
NSFileHandle类是一个针对文件描述符的面向对象封装类。可以使用文件处理对象来访问与文件、sockets、管道pipes和设备相联系的数据。 对于文件,你可以在文件中读、写、查找。对于套接字sockets、pipes和devices,可以使用处理对象来异步监视设备和进程数据。 大部分NSFileHandle类的创建方法都能使文件处理对象获得相关联的文件描述符的所有权。这意味翻译 2012-07-18 13:42:30 · 3622 阅读 · 0 评论