zoukankan      html  css  js  c++  java
  • objective-c自学总结(二)---init/set/get方法

    一:类的声明和实现:

    声明:(放在“类名+.h”文件中)。

    类的声明主要有两部分组成:实例变量和方法。

     

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    {
        NSString* _name;
        NSInteger _age;
        float _zhong;
    }
    -(void)setName:(NSString*)name;
    -(void)setAge:(NSInteger)age;
    -(void)setZhong:(float)zhong;
    -(void)getName;
    -(void)getAge;
    -(void)getZhong;
    @end
    

    实现:(放在“类名+.m”文件中)

    #import "Person.h"
    
    @implementation Person
    -(void)setName:(NSString*)name
    {
        _name=name;
    }
    -(void)setAge:(NSInteger)age
    {
        _age=age;
    }
    -(void)setZhong:(float)zhong
    {
        _zhong=zhong;
    }
    -(void)getName
    {
        NSLog(@"名字为:%@",_name);
    }
    -(void)getAge
    {
        NSLog(@"年龄为:%ld",_age);}
    -(void)getZhong
    {
        NSLog(@"体重为:%.2f",_zhong);
    }
    @end
    

    二:对象的创建和使用

      OC中的对象通过指针来声明。如: Person *person;

      OC中对象的创建,使用alloc来创建一个对象。(默认只能使用一次).编译器会给object对象分配一块可用的内存地址。然后调用init方法。

    Person* person=[[Person alloc] init];

    [对象名 方法名];//或[对象名 方法名:实参];

    [person setName:@”张三”];
    [person getName];
    

    四:常用访问修改类属性值的方法(set/get)

    Set方法是对某一属性设值。

    Get方法是获取某一个属性值。

    *注:OC命名规范get方法名不需要加get前缀

    set方法:设置,修改对象中的某一个实例变量的值

    -(void)setname:(NSString*)name
    {
        _name=name;
    }
    

    get方法:访问对象中的某一个实例变量的值

    -(int)name{
        return _name;
    }
    

    这里有一个非常方便的点语法调用:

    设置属性值

    Person.age=22-----à[personsetAge:22];

    Int age = person.age----àint age = [person age];


    五:返回值

    和C语言相同使用return 关键字返回,并跳出方法。

    六:自定义初始化方法实现

    1.      对象必须先创建,然后初始化,才能使用。

    2.      NSObject *object=[[ NSObjectalloc] init];

    首先为对象分配内存地址,为初始化做准备。初始化时对象创建过程中将新分配对象的状态设置为合理的初始值,使之处于可用状态的阶段。通过约定,我们要求初始化方法以init开头,并且在成功完成初始化后,返回当前对象,如果失败则返回nil。

    定义:

    -(id)initWithBook:(NSString*)Title ;//初始化单个参数
    -(id)initWithBook:(NSString*)Title initWithbook:(NSInteger)Pagenum;//初始化多个参数
    

    实现

    -(id)initWithBook:(NSString*)Title initWithbook:(NSInteger)Pagenum
    {
        self=[super init];<pre name="code" class="objc">Book *book1=[[Book alloc] initWithBook:@"sanguo" initWithbook:100];


    if(self!=nil) { title=Title; pageNum=Pagenum; } return self;}

    
    

    在init方法中,若要父类完成所需的一次初始化,需要调用[super init];,init方法返回的值,描述了被初始化的对象。

    将[super init];的结果赋给self是OC的标准惯例,这么做是为了防止父类在初始化过程中返回的对象不同于原先创建的对象。

    调用:

     

    Book *book1=[[Book alloc] initWithBook:@"sanguo" initWithbook:100];

    注:约定俗成的命名规则

    1.     类名首字母大写

    2.     变量名(变量的命名和C语言相同)和方法首字母小写

    3.     使用驼峰标示(initWithBook)

    七:self和super

    self指的是类对象本身

    super是父类对象本身

    self用来调用本类对象的方法

    super调用从父类继承下来的方法

    点击打开self/super详细介绍



  • 相关阅读:
    TZOJ 1214: 数据结构练习题――线性表操作
    团体程序设计天梯赛 到底是不是太胖了
    TZOJ 数据结构实验:单链表元素插入
    Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
    Codeforces Round #511 (Div. 2)
    模板
    模板
    模板
    Codeforces Round #603 (Div. 2)
    模板
  • 原文地址:https://www.cnblogs.com/leishitou/p/5436204.html
Copyright © 2011-2022 走看看