《objective-c 基础》笔记1

1.#import

#import 是GCC编译提供的,Xcode在编译Objective-c,c和c++程序时都会使用它。它可保证头文件被包含一次,而不论此命令实际上在那个文件中出现了多少次。

相当于c语言中的#ifdef命令

2.NSLog和“@”

NSLog(@"hello,Ojbective-c!"),接受的字符串可包含格式说明符(如:%d)

整体功能类似于java的println(),c的printf() 函数

注:已“ns”开头的函数说明是来自Cocoa而不是其他工具包。

字符串前的“@”标识引用的字符串应该作为Cocoa的NSString元素来处理。

3.布尔类型

BOOL:YES\NO (1 or 0)

4.@interface

@interface Circle:NSObject  //接口名为:Circle,Circle类是基于NSObject 类得,每个Circle都将继承NSObject类得所有行为

{

  ShapeColor fillColor;//数据成员之一,属于ShapeColor类型

  ShapeRect bounds;//数据成员之二,属于ShapeRect类型(fillColor,bounds 这两个的值称为Circle类对象的“实例变量”)

}

//方法声明模块 start

- (void) setFillColor:(ShapeColor) fillColor;//方法名是:setFillColor:,冒号是名称的一部分,告诉编译器后面会有参数;参数类型是:(ShapeColor),参数名称是:fillColor

- (void) setBounds:(ShapeRect) bounds;

- (void) draw;

//方法声明模块 end

+(NSString*) className; //类方法

@end //Circle

方法返回类型:标准类型(整型、浮点型、字符型)、指针、对象引用、结构

减号 –

     代表此方法是实体方法,必须先生成类实例,通过实例才能调用该方法。

加号 + 

    代表此方法是类的静态方法,可以直接调用,而不用生成类实例。

5.@ implementation

@ implementation Circle

 - (void) setFillColor:(ShapeColor) c

{

   fillColor = c;     

}//setFillColor

- (void) setBounds:(ShapeRect) b

{

  bounds = b;

}//setBounds

- (void) draw

{

  NSLog(@"drawing a circle at (%d %d %d %d) in %@",

bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));

}//draw

@end //circle

备注:接口实现类中可以定义接口中无相应声明的方法,可以不他们看做私有方法仅在类得实现中使用,也可以从该实现之外访问该方法,这是OC动态本质的副作用

6.实例化对象

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

{

   id shapes[1];

   ShapeRect rect0 = {0,0,10,30};

   shapes[0] = [Circle new];

   [shapes[0] setBounds:rect0];

   [shapes[0] setFillColor:kRedColor];

   drawShapes(shapes,1);

    

    return (0); 

} // main

7.继承

注意:oc不支持多继承

继承实例:

@interface Shape:NSObject  //Shape 继承自NSObject

{

  ShapeColor fillColor;

  ShapeRect bounds;

}

-(void) setFillColor :(ShapeColor) fillColor;

-(void) setBounds: (ShapeRect) bounds;

-(void) draw;

@end //Shape

@implementaion Shape

 -(void) setFillColor :(ShapeColor) c

 {

  fillolor = c;

 }

  -(void) setBounds:(ShapeRect) b

  {

  bounds = b;

  }

  -(void) draw

 {

  

 }//draw

 @ end

 @interface Circle:Shape

 @end // Circle

 @implementation Circle

-(void) draw

{

 NSLog(@"drawing a circle at (%d %d %d %d) in %@",

            bounds.x,bounds.y,

            bounds.widt,bounds.height,

            colorName(fillColor));

} //draw

 @end //Circle

备注:super关键字 (需要超类实现自身功能,同时在前面或后面执行某些额外的工作)

@implementation Circle

-(void) setFillColor:(ShapeColor) c

{

   if(c==kRedColor)

   {

      c == kGreenColor;

   }

[super setFillColor:c];

}// setFillColor

@end //Circle

相关推荐