相声演员苗阜的老师:obj-c对象

来源:百度文库 编辑:偶看新闻 时间:2024/03/29 08:16:23

一、间接(inderection)

即使用某种东西指向你想要的对象,或使用某事物代为办理某种工作

1、变量与间接

举例代码:

int i;

int count = 5;

for(i = 1; i <= count; i++){

         NSLog(@"%d\n",i);

}

 

其中count就是间接

 

2、文件名的间接

将处理内容保存到外部文件,使用文件流读取

 

二、在面向对象编程中使用间接

// Draw the shapes

 

void drawShapes (id shapes[], int count)

{

         int i;

        

         for (i = 0; i < count; i++) {

                   id shape = shapes[i];

                   [shape draw];

         }

        

} // drawShapes

 

代码解释:

1、  id代表identifier标识符,id是一种泛型,用于表示任何种类的对象,是一个指针指向     某个结构struct

2、  [shape draw]

         在C语言中[]方括号用于引用数组元素

         在Objective-C中用于通知对象进行某种操作,在这里就是调用shape对象的draw方法

 

 

三、Objective-C中的OOP

@interface接口,定义类的公共接口

创建类对象之前,Objective-C编译器需要读取类内部信息,使用@interface可以把信息传递给编译器

示例代码:

@interface Circle:NSObject              表示为Circle类定义的接口,并且Circle类继承自NSObject

                                                               括号内是Circle类的数据成员

         ShapeColor       fillColor;            名为fillColor的ShapeColor类对象

                                                                 其值为Circle类对象的实例变量

         ShapeRect        bounds;             名为bounds的ShapeRect类对象

}

- (void) setFillColor : (ShapeColor) fillColor;               (ShapeColor)表示需要的参数类型

- (void) setBounds : (ShapeRect) bounds;                  :冒号表示方法需要参数

- (void) draw;   方法声明,前面的短线表明这是Objective-C的方法声明,

                            这是区分函数原型与方法声明的方式,函数原型中没有先行短线

                            表示这是一个新方法

                            void表示无返回值

@end //Circle  表示已经完成了Circle类的声明

Objective-C方法可以返回与C相同的类型:标准类型(整型、浮点型和字符型)、指针、对象引用和结构

 

 

中缀符(infix notation)

Objective-C中有中缀符的语法,即方法的名称及其参数时和在一起的

例如,调用方法时将参数传入

[circle       setFillColor  :  red]

带两个参数的方法调用

[textThing         setStringValue :  @"hello there" color:blue ]

 

 

C中调用函数则直接把参数放在方法名之后,例:setTextThingValueColor(textThing, @"hello there" , blue);

 

 

@implementation实现,即接口的实现类

举例代码:

@implementation Circle          编译器指令,表示为某个类提供代码编译器指令后不用书写分号

 

- (void) setFillColor : (ShapeColor) c          c为形式参数,为避免名称冲突不使用传入时的名称

{

         fillColor = c;

}//setFillColor

                                                                                                                                                    

-(void) setBounds :(ShapeRect) b              b是随着隐藏参数self传递来的,方法调用时会将自身

                                                                        对象隐蔽的传度过来

         bounds = b;

}//setBounds

 

-(void) draw                                                                                方法定义不必按照@interface中的顺序

                                                                                                    出现,甚至可以书写无声明的方法该方法

         NSLog(@"drawing a circle at                                               将成为实现类的私有方法(Objective-C

                   (%d %d %d %d) in %@",                                       中并不存在真正的私有方法,即无法将方

                   bounds.x,bounds.y,bounds.width,                     法隐藏)

                   bounds.height,colorName(fillColor));

}//draw

 

 

实例化(instantiation)对象

创建新对象需要发送new消息

举例代码:

int main (int argc, const char * argv[])

{

         id shapes[1];                                                   定义类型为id指针,长度为1名字为shapes的数组

         ShapeRect rect0 = {0,0,10,30};                 定义一个矩形并为其提交4个坐标点参数

         shapes[0] = [Circle new];                                      为数组第一个元素实例化一个Circle类

         [shapes[0] setBounds : rect0];                  数组元素调用Circle类的方法

         [shapes[0] setFillColor : kRedColor];

         return(0);

}

如何将“C源程序”翻译成OBJ二进制代码、 C语言,使用TC,编程后,不能生成OBJ是怎么回事? 为什么在网吧用turbo c不能形成.obj文件 怎么在C程序可执行文件的目录里放cos.obj文件 怎么在C程序可执行文件的目录里放cos.obj文件!!! 编一个c程序,但连接不到.obj文件该怎么办? 在DOS下用命令行编译C文件生成OBJ和EXE怎么做? c语言编程中这样“unable to open input file 'COS.OBJ'” 我的C语言拷上不好用,说UNABLE ‘COS.OBJ’ 谁能帮我解决 Unable to open input file 'cos.obj'是怎么回事c语言问题 在写完c程序后,总是提示:unable to open input file 'cos. obj '??? 怎样显示C盘中的隐藏对象? C#中如何销毁一个对象? 为什么在我运行程序后系统写;unable to create output file c:\tc\noname.obj啊 c语言中为什么要运行一个程序是老是出现 unable to open input file 'cos.obj' 在turbo c里出现这样的link error::unable to open input file"cos.obj",如何解决? c编译时为什么总是出现“link error: unable to find input file ' cos.obj ' ”? 为什么我的C语言下载了运行时总是显示有错误‘C0S.OBJ'救救我啊! 我下载了好多TURBO C,说"unable to open input file 'cos.obj'" 我下载了好多TURBO C,说"unable to open input file 'cos.obj'",怎么解决? 我在做c程序的时候!总是出现错误:unable to open input fiel 'com.obj?' C语言编译错误信息出现Unable to creat output file \\\'C:\\TURBOC2\\C_OUT\\NONAME.obj解决方法 我在做C语言程序的时候,运行后怎么系统说:"UNABLE TO CREATE OUTPUT FILE C:\TC\NONAME.OBJ 啊 OBJ VALKYRIE 是什么意思