Object-c类

1      类的声明及定义

一个类包含两部分:类的声明(@interface)和类的定义(@implement)。

类的声明为class.h,而定义为class.m,两个文件的名字相同,后缀名不同。

使用时,只需要import “class.h”即可。

#import <Foundation/Foundation.h>
@interface Number: NSObject
 
-(void) print();
-(void) setNum:(int) n;
-(int) num;
 
@end

这里是Number类的声明,继承自NSObject,有三个方法,print、setNum没有返回值,num返回int型值。

类的定义:

#import "Nuumber.h"
@implement Nuumber{
         int num;
}
-(void)print {
         NSlog(@"%i",num);
}
-(void)setNum:(int) n {
         num = n;
}
-(int)num{
         return num;
}
@end

注意:导入时用双引号,而不是<Foundation/Foundation.h>,双引号适用于自己的文件,而<>适用于系统文件。

调用时只需要引入Number.h文件即可。

#improt "Nuumber.h"
int main(int argc, char *argv[]){
         @autoreleasepool{
                   Nuumber *number = [[Nuumber alloc] init];
                   [number setNum:2];
                   NSLog(@"result:%i",[number num]);
         }
}

2      生成存取方法

接口部分使用@property。使用后,实现部分就不需要再声明属性了,编译器会自动检查。

@interface Number : NSObject
@property num;
-(void) print();
-(void) setNum:(int) n;
-(int) num;
@end

实现部分使用@synthesize后,会自动生成存取方法:setNumnum;

@implement Nuumber
@synthesize num;
-(void)print {
         NSlog(@"%i",num);
}
@end

@property ( copy, nonatomic );   copy属性会在setter方法内生成属性的副本,默认不会产生属性的副本,只是赋值(assign)。

nonatomic属性表示线程安全。

3      点运算符

访问Number类中的num属性可以使用 [number num];

也可以使用 number.num;

赋值使用 number.num = 1; 就等同于 [number setNum:1]

点运算符也可以用在自定义的方法上,如上有一个print方法,所以写作 number.print。需要注意的是点运算符一般用在属性上,用在方法代码风格不够清晰。

注意:使用@synthesize时,属性名不要为new alloc copy init

 

4      多个参数

@interface DecimalNuumber : NSObject
@property integer , decimal;
-(void) setInteger:(int)a andDecimal:(int)b   //-(void) setInteger:(int)a :(int)b;
@end
 
//调用
[number setInteger:1 andDecimal:2]   //[number setInteger:1:2]

5      static关键字

在变量前加static关键字,为静态变量,可以让变量多次保留方法多次调用的值。

static int count = 0;

静态变量的初始化值为0。只在程序第一次运行时初始化,多次调用时保留值。

6      self关键字

self关键字用来指明对象是当前方法的接受者。

@implement Nuumber
@synthesize num;
-(void)print {
         [self print1]
}
-(void)print1 {
         NSlog(@"%i",num);
}
-(void)setNum:(int) n {
         num = n + self.num;
}
-(int)num{
         return num;
}
@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值