Object C初学学习笔记(1)

最近开始学习IOS编程,自然开始接触了Object C 语言,下午看着例子进行了手动尝试了编码,对整个语言有基本的了解。

在Xcode创建Object C class文件,基本的class文件结构相比java语言 ,还是是简单多了,整体的文件结构

 

首先是头文件,后缀是以 .h头文件,这个文件定义了class的基本结构,有点类似一个类模板,定义class的结构信息

 

头文件部分

#import <目录/头文件.h> //代表只引入系统库的类的头文件

#import "目录/头文件.h" // 代表默认从当前路径下搜索是否存在对应的头文件,如果不存在,则从系统库里面

 

类变量部分

static 变量类型 变量名 = 初始值 //其中初始值可以没有

 

类定义以及成员变量定义部分,框架

@interface  XXClass:NSObject <ProtocolA,ProtocolB>{

  @public int a;

  @private float b;

      @protected int c;

}

 

@代表Object C 在C语言的基础上 新引入的关键字的前缀

@interface代表这个是一个类定义,这个和java里面的interface不一样

XXClass代表定义的类名

:NSObject 代表继承了NSObject对象

<ProtocolA,ProtocolB> 代表实现了ProtocolA 和 ProtocolB 协议,这个Protocol和java语言里面的interface意义相同

类成员的变量是在 变量作用域 变量类型 变量名

 

接下来定义方法

-(void) print ;

-(void) setterA : (int) a;

-(void) setterABC : (int) a andB:(float) b andC:(int) c

+(int) toString ;

方法的定义为 方法所有者(返回值):方法名:(参数类型) 参数变量 下一个参数说明:(参数类型) 参数变量名 下一个参数说明 : (参数类型) 参数变量

其中 +代表类方法   -代表实力方法 在java里面相当于是否由static修饰符

其中 方法定义里面多了一个参数说明,这个参数说明有点怪,第一个参数是不能由参数说明的,如果由多个参数,从第二个参数开始,才允许由参数说明,这个参数说明一般情况是在重载的时候使用的,比如我有多个setterValue方法,第一个方法由一个变量,第二个方法有两个变量 ,那么第二个方法里面可以说明第二个变量干嘛用的

 

最后一行就是类定义结束 使用 @end标签就可以了

下面是一个完整的类定义

#import <Foundation/Foundation.h>

 

staticint i = 0;

 

@interface SampleTwoPerson : NSObject<NSCoding>{

    NSString *name ;

    float weight ;

}

 

-(SampleTwoPerson*) initNameAndWeight : (NSString*) name andweight:(float) weight andObject:(NSString *) obj;

-(NSString *) getterName ;

-(float) getterWeight;

-(NSString *) toString ;

 

@end

 

接下来是写class的实现文件,实现文件后缀是.m

首先还是引入头文件,这里面只需要引入定义的class头文件就可以了

#import "XXClass.h"

下面就是实现了

@implementation XXClass

方法定义 {

  code

  //方法实现代码

};

@end

方法定义和头文件XXClass.h中一样,只需要去掉最后面一个;号即可

同时还需要实现 类定义里面 需要实现的 Protocol 方法即可。

#import "SampleTwoPerson.h"

 

@implementation SampleTwoPerson

 

-(SampleTwoPerson*) initNameAndWeight : (NSString*) name1 andweight:(float) weight1 andObject:(NSString *) obj;

{

    self->name = name1;

    self->weight = weight1;

    returnself;

};

 

-(NSString *) getterName {

    return name;

}

-(float) getterWeight{

    return weight;

}

-(NSString *) toString {

    return  name;

}

 

//下面两个方法是类定义中的 NSCoding 协议的实现

- (void)encodeWithCoder:(NSCoder *)aCoder{

    

}

- (id)initWithCoder:(NSCoder *)aDecoder{

    returnnil;

}

 

@end

以上就是Object 语言的class文件定义的基本语法。