努力工作,关爱家人

博客园 首页 新随笔 联系 订阅 管理

文章分类 -  Objective-C

1 2 下一页

摘要://1、创建常量字符串。 NSString *astring = @"This is a String!";//2、创建空字符串,给予赋值。NSString *astring = [[NSString alloc] init]; astring = @"This is a String!"; NSLog(@"astring:%@",astring); [astring release];//3、在以上方法中,提升速度:initWithString方法NSString *astring = [[NSString alloc] initW 阅读全文
posted @ 2011-12-13 16:52 jelink 阅读(395) 评论(0) 推荐(0)

摘要:对象的初始化以及实例变量的作用域本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。 到目前为止,我们都使用的是下列方式创建对象Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->[类名 new]; 复制代码这种new的方式,实际上是一种简化的方式。笔者在这里总结一下前面几章里面曾经提到过关于创建对象的2个步骤:第一步是为对象分配内存也就是我们所说的alloc 阅读全文
posted @ 2011-12-09 17:17 jelink 阅读(1016) 评论(0) 推荐(0)

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

摘要:到目前为止,我们已经学习了两种创建新对象的方法:[类名 new] 和 [[类名 alloc] init]。这两种方法是等价的,不过Cocoa的惯例是使用后者。 有些语言(如C++和Java)使用构造函数在单次操作中执行对象的分配和初始化。Objective-C将这两种操作拆分为两个明确的步骤:分配和初始化。分配(allocation):向某个类发送alloc消息的结果就是为该类分配一块足够大的内存,以存放该类的全部实例变量。同时,alloc方法还顺便将这块内存区域全部初始化为0。初始化(initialization)从操作系统取得一块内存,准备用于存储对象。init方法几乎总是返回它们正在初. 阅读全文
posted @ 2011-12-09 17:14 jelink 阅读(210) 评论(0) 推荐(0)

摘要:Cocoa内存管理规则1)当你使用new、alloc、copy方法创建一个对象时,该对象的保留计数器值为1.当不再使用该对象时,你要负责向该对象发送一条release或autorelease消息。这样,该对象将在其使用寿命结束时被销毁。2)当你通过其他方法获得一个对象时,这假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理。如果你打算在一段时间内拥有该对象,这需要保留它并确保在操作完成时释放它。3)如果你保留了某个对象,你需要(最终)释放或自动释放该对象。必须保持retain方法和release方法的使用次数相等。 “如果我使用了new、alloc. 阅读全文
posted @ 2011-12-09 17:12 jelink 阅读(233) 评论(0) 推荐(0)

摘要:1.对象生命周期对象的生命周期包括诞生(通过alloc或new方法实现)、生存(接收消息和执行操作)、交友(借助方法的组合和参数)、释放(当它们的生命结束时最终死去)。当对象的生命周期结束时,它们的原材料(内存)将被回收以供新的对象使用。引用计数(reference counting):每个对象有一个与之相关联的整数,称做它的引用计数器或保留计数器。当某段代码需要访问一个对象时,该代码将该对象的保留计数器值加1,表示“我要访问该对象”。当这段代码结束对象访问时,将对象的保留计数器值减1,表示它不再访问该对象。当保留计数器值为0时,表示不再有代码访问该对象了,因此对象将被销毁,其占用的内存被系. 阅读全文
posted @ 2011-12-09 17:11 jelink 阅读(262) 评论(0) 推荐(0)

摘要:5.各种数值NSArray和NSDictionary只能存储对象,而不能直接存储任何基本类型的数据,如int、float 或 struct。但是你可以用对象来封装基本数值。例如,将int型数据封装到一个对象中,然后就可以将这个对象放入NSArray或NSDictionary中了。1)NSNumberCocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。例如以下创建方法:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->+ ( 阅读全文
posted @ 2011-12-09 17:10 jelink 阅读(178) 评论(0) 推荐(0)

摘要:Cocoa是由两个不同的框架组成:Foundation Kit 和 Application Kit(AppKit)。AppKit包含了所有的用户接口对象和高级类。 1.范围NSRange:用来表示相关事物的范围,定义于NSRange.h。通常是字符串里的字符范围或者数组(NSArray)里的元素范围。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1 typedef struct _NSRange {2 NSUInteger locatio. 阅读全文
posted @ 2011-12-09 17:05 jelink 阅读(675) 评论(1) 推荐(1)

摘要:一、UILabel 二、UIButton 常用事件:Touch Up Inside 三、UITextField 常用属性:Text:要显示的文本。Placeholder:指定将要在文本字段中以灰色显示的占位符文本。Clear When Editing Begins:用户触摸此字段时是否删除字段中的值。Text Input Traits:文本输入特征。 四、UIImageView 常用属性:image:指定图像文件Mode:图像在视图内部的对齐方式以及是否缩放图像以适应视图。选择任何图像缩放的选项都会潜在地增加处理开销,因此最好避开这些选项,并在导入图像之前调整好图像大小。通常Mode属性为.. 阅读全文
posted @ 2011-12-09 17:04 jelink 阅读(191) 评论(0) 推荐(0)

摘要:Objective-C中的OOP @interface //定义类的公共接口。实例变量{ int a;}方法声明- (void) draw;- (void) setFillColor: (ShapeColor) fillColor; //fillColor为方法参数先行短线表明“这是新方法的声明”。(void)表明该方法不返回任何值。方法名称是 setFillColor: ,结尾处的冒号表示后面会出现参数。(ShapeColor) fillColor;参数的类型是圆括号中指定的,紧随其后的是参数名称 中缀符(infix notation):方法的名称及其参数都是合在一起的。例如:Code .. 阅读全文
posted @ 2011-12-09 16:51 jelink 阅读(274) 评论(0) 推荐(0)

摘要:上一篇中,所有代码都是放在同一个文件main.h中的,这显然不是一个好的方式,代码多了以后,看着就头大。可以将其进行拆分:1、将所有枚举、结构的定义单独放在一个文件ShapeDef.h中//定义“几何形状类型”枚举typedef enum{ kCircle, kRectangle, kOblatesShperoid } ShapeType; //定义“几何形状颜色”枚举typedef enum{ kRedColor, kGreenColor, kBlueColor} ShapeColor; //定义“几何形状矩形区域”结构typedef struct{ int x,y,width,hei... 阅读全文
posted @ 2011-12-09 16:46 jelink 阅读(169) 评论(0) 推荐(0)

摘要:上一篇展示了如何用传统的“面向过程编程方法”,实现画“矩形”、“圆”、“椭圆”,这一篇看下如何改用OOP的方法来实现:因为要用到“颜色”以及“矩形区域”二个枚举,先把他们抽出来单独放在CommDef.h文件中//定义“几何形状颜色”枚举typedef enum{ kRedColor, kGreenColor, kBlueColor} ShapeColor;//定义“几何形状矩形区域”结构typedef struct{ int x,y,width,height;} ShapeRect;然后再定义基类Shape,注意:在obj-C中,定义一个类通常分成二部分,一部分是".h"的 阅读全文
posted @ 2011-12-09 16:45 jelink 阅读(161) 评论(0) 推荐(0)

摘要:先来定义一个Human父类定义部分://// Human.h// OOP//// Created by jimmy.yang on 11-2-9.// Copyright 2011 __MyCompanyName__. All rights reserved.//#import <Foundation/Foundation.h>@interface Human : NSObject { BOOL sex;}+(void) toString;-(void) showSex;@end注:+(void)前的加号,就表示这一个是类方法(static 方法),而-(void)表示这是一个实例 阅读全文
posted @ 2011-12-09 11:32 jelink 阅读(169) 评论(0) 推荐(0)

摘要:obj-c本质就是"改进过的c语言",大家都知道c语言是没有垃圾回收(GC)机制的(注:虽然obj-c2.0后来增加了GC功能,但是在iphone上不能用,因此对于iOS平台的程序员来讲,这个几乎没啥用),所以在obj-c中写程序时,对于资源的释放得由开发人员手动处理,相对要费心一些。引用计数这是一种古老但有效的内存管理方式。每个对象(特指:类的实例)内部都有一个retainCount的引用计数,对象刚被创建时,retainCount为1,可以手动调用retain方法使retainCount+1,同样也可以手动调用release方法使retainCount-1,调用rele 阅读全文
posted @ 2011-12-09 11:31 jelink 阅读(120) 评论(0) 推荐(0)

摘要:如果一个对象的生命周期显而易见,很容易就知道什么时候该new一个对象,什么时候不再需要使用,这种情况下,直接用手动的retain和release来判定其生死足矣。但是有些时候,想知道某个对象在什么时候不再使用并不那么容易。如果下面的代码,看上去非常简单:Sample.h类接口部分#import < Foundation / Foundation.h >@interface Sample : NSObject {}-(NSString*) toString;@endSample.m类实现部分#import "Sample.h"@implementation Sam 阅读全文
posted @ 2011-12-09 11:30 jelink 阅读(109) 评论(0) 推荐(0)

摘要:注:这是《Objective-C基础教程》一书上的实例,但是原书限于篇幅,分析得比较简单,初次阅读看得比较费劲,这里展开详细讨论一下。场景:有二个类Car和Engine,即“汽车”和“引擎”。先来看最初的版本:Engine.hexpand source?1234567#import <Cocoa/Cocoa.h> @interface Engine : NSObject @property int flag; @end // EngineEngine.mexpand source?12345678910111213141516171819#import "Engine.h 阅读全文
posted @ 2011-12-09 11:20 jelink 阅读(109) 评论(0) 推荐(0)

摘要:objective-C: NSString应该用initWithFormat? 还是 stringWithFormat? 阅读全文
posted @ 2011-12-09 11:19 jelink 阅读(123) 评论(0) 推荐(0)

摘要:在c#中要扩展一个现有类很容易,比如这样:?1234567public static class Utils{ public static void PrintToConsole(this string strSrc) { Console.WriteLine(strSrc); } }这样就为String类添加了一个PrintToConsole的方法,使用方法如下:?1234567class MainClass{ public static void Main (string[] args) { "Hello World!".PrintToConsole(); }}在obje 阅读全文
posted @ 2011-12-09 11:16 jelink 阅读(106) 评论(0) 推荐(0)

摘要:今天在园子里看到了一篇牛文“Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针 ”,讲得十分精彩,忍不住把它的代码加上注释整理于此,以便日后查看。个人体会:obj-C中的“Class类型变量”比c#中的Object基类还要灵活,可以用它生成任何类型的实例(但是它又不是NSObject)。而选择器SEL与函数指针IMP,如果非要跟c#扯上关系的话,这二个结合起来,就点类似c#中的反射+委托,可以根据一个方法名称字符串,直接调用方法。"牛"的基类 Cattle.h#import <Fou 阅读全文
posted @ 2011-12-09 11:09 jelink 阅读(580) 评论(0) 推荐(0)

摘要:先承认我是标题党,因为在obj-c的世界中,官方根本没有"接口"与"泛型"这样的说法。不过在obj-c中有二个与之接近的概念"非正式协议(interface)"与"正式协议(protocal)"。非正式协议在obj-c中的关键字虽然也是interface,但是这个跟c#中的接口(interface)并不完全相同。回忆一下前面学过的内容,我们定义一个类Sample时,总是会先生成一个Sample.h,代码如下:#import <Foundation/Foundation.h>@interface Samp 阅读全文
posted @ 2011-12-09 11:06 jelink 阅读(841) 评论(0) 推荐(0)

1 2 下一页