您的位置:首页 > 数据库

iBATIS SQL Maps(一)

2007-01-26 12:07 274 查看
1.ObjC跟C的区别与联系

首先 ObjC是一个面向对象的语言(封装、继承、多态) ObjC相当于C的一个超集 即ObjC允许使用任何C语言代码 但增加了许多C没有的特点 bigger easier

2.ObjC中的类与对象

类由接口( XX.h @interface)和实现(XX.m @implementation)两部分构成
XX.h中声明类中的实例变量和功能
XX.m中实现.h中的功能

注意:

命名规则 类名首字母大写 Student 方法名首字母小写(驼峰)-(void)sayHi

- 实例方法 + 类方法

3.类的创建和使用

声明:在.h文件中

#import<Foundation/Foundation.h>

@interface Student : NSObject //NSObject父类名 Student类名
{
实例变量 int _age; //实例变量分为@protect @private @public 默认@protect

}

- (void)setAge:(int)age; //声明方法
- (int)getAge;
- (void)sayHi;

@end

实现:在.m文件中

#import "Student.h" //要包含.h文件

@implementation Student

-(void)setAge:(int)age //方法的实现
{
int _age=age;
}
-(int)getAge
{
return _age;
}

-(void)sayHi
{

}

@end

调用:在别的类中

#import "Student.h"

Student *s=[[Student alloc]init]; //alloc分配内存空间 init初始化
s.name=@"tt"; //只有用了@Property @synthesize s.name才能用 俗称点语法 self.name
[s sayHi]; // 不然只能通过实例方法访问实例变量(因为默认@protected) 如果是public可以用 s->name 访问(s本质上是指针)

属性:@property(non atomic,retain)NSString *name; //相当于声明了setter getter方法
@synthesize name = _name; //在.m文件中 相当于实现了setter getter方法 _name相当于在.h文件中声明了一个实例变量只是没看到

注意:

@property()里边的属性

访问控制: readwrite(默认方式) readonly(就没有setter方法)
内存管理:assign 用于基本类型 retain 用语对象 copy需要实现NScoping
线程安全:atomic(默认) nonatomic 非原子性(一般用非原子性)

对象初始化三个方法(实例方法用- 类方法用+)

指定初始化方法:实例方法

声明:
-(id)initWithName:(NSString *)name;

实现:
-(id)initWithName:(NSString *)name
{
self=[super init]; //调用父类的指定初始化方法 以此判断指定初始化方法
if (self)
{
_name=name;
}
return self;
}

一般初始化方法:实例方法

声明:
-(id)initWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate;

实现:
-(id)initWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate
{
self=[self initWithName:name];

if (self)
{
_name=name;
_age=age;
_sex=sex;
_talent=talent;
_mate=mate;
}
return self;
}

调用:
Rider *r=[[Rider alloc]initWithName:@"rider" andAge:25 andSex:@"M" andTalent:@"HP 30,MP 0,SP 30" andMate:nil];

注意:

通常以init开头 返回值为id

一个类只有一个指定初始化方法

指定的初始化方法是必须执行的

内部实现会调用到父类的初始化方法

便利构造器:类方法

声明:
+(id)machineWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate;

实现:
+(id)machineWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate
{
Machine *mac=[[Machine alloc]initWithName:name andAge:age andSex:sex andTalent:talent andMate:mate]; //调用初始化方法
return [mac autorelease];//便利构造器内部已经实现内存管理
}

调用:
Machine *mac=[Machine machineWithName:@"machine" andAge:5 andSex:@"?" andTalent:@"HP 10,MP 0,PW 100" andMate:nil];

注意:

便利构造器方法以类名开头

类方法内部不能用实例变量

类方法只能以类(名)来调用

单例模式:

声明:
+(King *)defaultKing;

实现:
+(King *)defaultKing
{
static King *k=nil;
if (k==nil)
{
k=[[King alloc]init];
}
return k;
}

调用:
King *k=[King defaultKing];
k.name=@"king";
k.age=100;
k.sex=@"M";
k.talent=@"PH 10,MP 10";
k.mate=nil;

注意:
单例对象的类只能有一个实例 再次调用得到本来的内存地址本文出自 “LY” 博客,请务必保留此出处http://xingboss3.blog.51cto.com/4155513/964906
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: