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文件定义的基本语法。