码迷,mamicode.com
首页 > 其他好文 > 详细

OC类相关知识

时间:2015-01-10 08:55:59      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:ios object-c

我们新建一个student

1、声明文件-student.h

#import <Foundation/Foundation.h>

@interface student : NSObject{
    int _age;
}
- (int) getAge;
- (void)setAge:(int)age;
@end

 

@interface代表声明一个类,:NSObject代表继承自NSObject成员变量应当定义在大
括号中,一般在成员变量前面加下划线_,默认作用域是@protected,我们在@interface和@end里面定义成员变量和方法。在定义方法的参数中一个冒号对应一个参数,类型都要用括号括住。在中间声明的所有方法都是公共的方法。

如果在set方法中有多个参数,例如我们在添加一个int _score成员变量,然后在set方法中赋值,我们可以这样表示:(void)setAge:(int)age andScore:(int)score;

冒号是方法名的一部分,例如:(void)setAge:(int)age andScore:(int)score;它的方法名是:setAge:andScore:

 

2、实现文件-student.m

#import "student.h"

@implementation student

-(int)getAge{
    NSLog(@"invoke get function");
    return _age;
}

-(void)setAge:(int)age{
    _age=age;
    NSLog(@"invoke set function");
}
@end

 

@implementation代表来实现一个类

 

3、类的调用-main.m

#import <Foundation/Foundation.h>
#import "student.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {       
        student *stu=[[student alloc] init];      
        [stu setAge:20];
        int age=[stu getAge];
        [stu release];
        NSLog(@"age is %i",age);
    }
    return 0;
}

输出结果:

invoke set function
invoke get function
age is 20

 

main方法中,我们首先创建一个对象,创建对象分为2步:首先调用一个静态方法alloc来分配内存,然后再调用一个动态方法init进行初始化。为了安全地初始化对象,应该把内存分配方法和初始化方法结合起来使用,像上面的程序一样。OC中方法调用用的是中括号[]。当不再使用对象时,我们可以调用release方法释放对象。

默认的构造方法,也就是init方法,它是无参数的。我们可以自定义一个带参数的构造方法。

-(id)initWithHeight:(int)height{
    if(self=[super init])
    {
        _height=height;
    }
    return self;
}

OC中,初始化方法的实现需要遵守比其他种类方法更多的约束和规则:

1、自定义初始化方法的命名一般应以“init”开头;

2、初始化方法的返回值类型必须是id

3、在自定义初始化方法的实现中,必须有对本类的指定初始化方法的引用。

 

一般get方法直接以成员变量的名字来命名,所以在上面的程序中,我们将(int)getAge改为(int)age,然后我们可以用stu.age=20来代替[stu setAge:20],用int age=stu.age来代替[stu age],输出的结果是一样的。也就是.号在赋值语句的左边相当于set方法,.号在右边相当于get方法。

-代表动态方法,+代表静态方法。”+”方法通过类名直接访问,和java程序一样,例如:[student 静态方法]。”-”方法必须通过实例化对象后才能访问,例如:[stu getAge]。

 

NSLog可以输出任何OC对象,NSLog(@”%@”,stu);它会输出<类名:对象的内存地址>

NSLog函数一旦发现用%@输出某个OC对象时,就会调用这个对象的description方法(这个方法返回值是NSString类型,是OC中的字符串类型),并且将description方法返回的字符串代替%@的位置进行输出

我们可以重写description方法,但是不要在其中同时使用%@self,这样会死循环的。

- (NSString *)description {

    return [NSString stringWithFormat:@"age=%i", _age];

 }

OC类相关知识

标签:ios object-c

原文地址:http://blog.csdn.net/ccq1029/article/details/42564141

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!