代码改变世界

随笔分类 -  Objective-C

Objective-C NSString应该用initWithFormat? 还是 stringWithFormat?

2012-08-13 17:09 by java环境变量, 223 阅读, 收藏,
摘要: 今天在看书上的一段代码时,发现NSString实例化时,有时用的是initWithFormat方法,有时用的是stringWithFormat,到底应该如何选择呢?区别:1、initWithFormat是实例方法只能通过 NSString* str = [[NSString alloc] initWithFormat:@"%@",@"HelloWorld"] 调用,但是必须手动release来释放内存资源2、stringWithFormat是类方法可以直接用 NSString* str = [NSString stringWithFormat:@&quo 阅读全文

objective-C中的扩展方法与partial class

2012-08-13 17:08 by java环境变量, 287 阅读, 收藏,
摘要: 在c#中要扩展一个现有类很容易,比如这样:?1234567publicstaticclassUtils{publicstaticvoidPrintToConsole(thisstringstrSrc){Console.WriteLine(strSrc);}}这样就为String类添加了一个PrintToConsole的方法,使用方法如下:?1234567classMainClass{publicstaticvoidMain (string[] args){"Hello World!".PrintToConsole();}}在objective-C中,也有类似的处理办法:St 阅读全文

objective-C 中如何判断一个类中有没有定义某个方法

2012-08-13 17:07 by java环境变量, 283 阅读, 收藏,
摘要: C#中可以通过反射分析元数据来解决这个问题,示例代码如下:?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849usingSystem;usingSystem.Reflection;namespaceHello{classProgram{staticvoidMain(string[] args){if(IsMethodDefined(typeof(Utils),"HelloWorld")){Console.WriteLine("Utils类 阅读全文

objective-C中的接口与泛型

2012-08-13 17:04 by java环境变量, 191 阅读, 收藏,
摘要: 先承认我是标题党,因为在obj-c的世界中,官方根本没有"接口"与"泛型"这样的说法。不过在obj-c中有二个与之接近的概念"非正式协议(interface)"与"正式协议(protocal)"。非正式协议在obj-c中的关键字虽然也是interface,但是这个跟c#中的接口(interface)并不完全相同。回忆一下前面学过的内容,我们定义一个类Sample时,总是会先生成一个Sample.h,代码如下:#import <Foundation/Foundation.h> @interface Sam 阅读全文

objective-C 自动释放池(autorelease pool)

2012-08-13 17:00 by java环境变量, 306 阅读, 收藏,
摘要: 如果一个对象的生命周期显而易见,很容易就知道什么时候该new一个对象,什么时候不再需要使用,这种情况下,直接用手动的retain和release来判定其生死足矣。但是有些时候,想知道某个对象在什么时候不再使用并不那么容易。如果下面的代码,看上去非常简单:Sample.h类接口部分#import < Foundation / Foundation.h > @interface Sample : NSObject { } -(NSString*) toString; @endSample.m 类实现部分#import "Sample.h" @implementati 阅读全文

Objective-C 2.0 内存管理

2012-08-13 16:55 by java环境变量, 252 阅读, 收藏,
摘要: 9.1前言 内存管理在objective-C 2.0中是非常重要的,内存管理做得好不好,最直观的就是反应在你的程序crash上面。想要你的程序健壮稳定,那么请务必搞明白内存管理。9.2 objective-C 2.0是怎样一个内存机制? 在objective-C 2.0语言中,内存管理主要是基于一个 release count的值来进行判断系统是否要回收该内存。当某对象的 retain count等于0时,系统则会回收这段内存。所以当我们想要释放掉某项目时,我们只需要使其retain count等于0即可。当我们想要hold住该段内存以便后面继续使用(具体怎么用将会在后面提到)那么你只需要保证 阅读全文

Objective-C 2.0 类方法以及私有方法

2012-08-13 16:54 by java环境变量, 415 阅读, 收藏,
摘要: 8,类方法以及私有方法本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。Objective-C里面区别于实例方法,和Java或者C++一样,也支持类方法。类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenience method)。工厂方法的称谓明显和一般意义上的工厂方法不同,从本质上来说,类方法可以独立于对象而执行,所以在其他的语言里面类方法有的时候被称为静态方法。就像@interface曾经给我们带来的混乱一样,现在我们就不去追究和争论工厂 阅读全文

Objective-C 2.0 对象的初始化以及实例变量的作用域

2012-08-13 16:53 by java环境变量, 290 阅读, 收藏,
摘要: 7,对象的初始化以及实例变量的作用域本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。到目前为止,我们都使用的是下列方式创建对象[类名 new];这种new的方式,实际上是一种简化的方式。笔者在这里总结一下前面几章里面曾经提到过关于创建对象的2个步骤:第一步是为对象分配内存也就是我们所说的allocation,runtime会根据我们创建的类的信息来决定为对象分配多少内存。类的信息都保存在Class里面,runtime读取Class的信息,知道了各个实例变量的类型,大小,以及他们的在内存里面的位置偏移,就 阅读全文

Objective-C 2.0 NSObject的奥秘

2012-08-13 16:52 by java环境变量, 232 阅读, 收藏,
摘要: 6,NSObject的奥秘本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。在上一章里面,笔者向大家介绍了在Objective-C里面的几个非常重要的概念, 简单的说就是SEL,Class和IMP。我们知道Objective-C是C语言的扩展,有了这3个概念还有我们以前讲过的继承和封装的概念,Objective-C发生了翻天覆地的变化,既兼容C语言的高效特性又实现了面向对象的功能。Objective-C从本质上来说,还是C语言的。那么内部究竟是怎样实现SEL,Class和IMP,还有封装和继承的?为了解答 阅读全文

Objective-C 2.0 Class类型,选择器Selector以及函数指针

2012-08-13 16:49 by java环境变量, 298 阅读, 收藏,
摘要: 5,Class类型,选择器Selector以及指针函数本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。上一章笔者介绍了在Objective-C里面继承的概念。有了继承的知识我们可以重复的使用很多以前生效的代码,这样就大大的提高了代码开发的效率。在本章,笔者要向同学们介绍几个非常重要的概念,Class类型, 选择器Selector以及指针函数。我们在实际上的编程过程中,也许会遇到这样的场景,那就是我们在写程序的时候不能确切的知道我们需要使用什么类,使用这个类的什么方法。在这个时候,我们需要在我们的程序里面 阅读全文

Objective-C 2.0 继承

2012-08-13 16:47 by java环境变量, 196 阅读, 收藏,
摘要: 4,继承本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。上一章笔者介绍了一下在Objective-C里面的类的基本构造和定义以及声明的方法。我们知道在面向对象的程序里面,有一个很重要的需求就是代码的重复使用,代码的重复使用的重要方法之一就是继承。我们在这一章里面,将要仔细的分析一下继承的概念以及使用的方法。有过其他面向对象语言的同学,对这一章的内容应该不会感到陌生。4.1,本章的程序的执行结果在本章里面,我们将要重复使用第3章的部分代码。我们在第3章构筑了一个叫做Cattle的类,我们在这一章里面需要使 阅读全文

Objective-C 2.0 类的声明和定义

2012-08-13 16:45 by java环境变量, 430 阅读, 收藏,
摘要: 3,类的声明和定义本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。上一章我们写了一个非常简单的Obejctive-C下面的Hello, World!的小程序,并且对里面出现的一些新的概念进行了解释。这一章,我们将要深入到Objective-C的一个基本的要素,也就是类的声明和定义。通过本章的学习,同学们应该可以定义类,给类加上变量,还有通过方法访问类的变量。不过准确的说,变量和方法的名词在Objective-C里面并不是最准确的称呼,我们暂时引用Java的定义,稍后我们将统一我们的用语定义。3.1,本章 阅读全文

Objective-C 2.0 从Hello,World!开始

2012-08-13 16:44 by java环境变量, 246 阅读, 收藏,
摘要: 2,从Hello,World!开始本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。现在笔者假设大家已经有了开发的环境。好了,我们开始构筑我们的第一个程序。在开始第一个程序之前,笔者需要提醒大家一下,如果手里面有开发环境的话并且是第一次亲密接触Xcode的话,为了可以熟悉开发环境,强烈建议按照笔者的步骤一步一步的操作下去。尽管如此,笔者还是为大家准备了已经做好的代码,点击这里下载。2.1,构筑Hello, World第一步,启动Xcode。初次启动的时候,也许会弹出一个“Welcome to Xcode” 阅读全文