Object C初学学习笔记(1)
2013-11-21 16:44
225 查看
最近开始学习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标签就可以了
下面是一个完整的类定义
接下来是写class的实现文件,实现文件后缀是.m
首先还是引入头文件,这里面只需要引入定义的class头文件就可以了
#import "XXClass.h"
下面就是实现了
@implementation XXClass
方法定义 {
code
//方法实现代码
};
@end
方法定义和头文件XXClass.h中一样,只需要去掉最后面一个;号即可
同时还需要实现 类定义里面 需要实现的 Protocol 方法即可。
以上就是Object 语言的class文件定义的基本语法。
在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 C初学学习笔记(1)
- 初学Python的学习笔记12----单元测试、文档测试和文件读写
- Object C学习笔记24-关键字总结
- 初学ML笔记N0.2——生成学习算法
- 初学Web接口调用的一些学习笔记
- 初学 j2ee servlet 学习笔记(1)
- XML初学进阶学习笔记(5)
- 【初学】Objective-C学习笔记-看我72变之继承
- 初学ML笔记N0.2——生成学习算法
- Object C学习笔记16-委托(delegate)
- Object C学习笔记7-字符串NSString之一
- Object C学习笔记10-静态方法和静态属性
- 初学Python的学习笔记10----多重继承、定制类、枚举类
- webservice学习之AXIS初学笔记--创建自己的webservice
- XML初学进阶学习笔记(3)
- Object C学习笔记3-对象的使用和定义
- Object C学习笔记22-#define 用法
- Object C学习笔记5-ARC forbids explicit message* 编译错误
- 【初学】Objective-C学习笔记-Objectiv-C
- c++学习笔记(初学)