2.OC类

作者: 圆梦人生 | 来源:发表于2015-05-22 11:16 被阅读118次
    1. 在OC类中创建一个类会生成两个文件:
      .h文件(用于声明成员变量和方法)
      .m文件(用于实现.h文件声明的方法)
    2. 在.h文件中类的定义关键字使用@interface,结尾必须加上@end表示结束,OC中所有关键字都要加上@,OC的超类是NSObject。
      例如:
      @interface Student @end
    3. 在.m文件中定义类使用@implementation,结尾加上@end表示结束
      例如:
      @implementation Student @end
    4. OC类中的继承使用 : (冒号)
    5. 在.h文件中成员变量都写在{} (花括号)中,成员变量以_开始
      例如:
      @interface Student{ int _age; int _name; } @end
    6. OC中get方法是去掉成员变量 _ (下划线)以后的内容,如成员变量是_age,对应的get方法是age
    7. OC中set方法如果有参数使用:表示,有几个参数使用几个冒号
      例如
      @implementation Student -(int) setAge:(int)age{}//set方法名是:setAge: -(int) setAge:(int)age andNo:(int)no{} //set 方法名是:setAge:andNo: @end
    8. OC中静态方法使用 + (加号)表示,如果是对象动态方法使用 - (减号)表示,方法返回值类型和参数返回值类型都要放到 () 中,如:(int)
    9. OC实例化对象和调用对象方法都要写在[]中
    10. OC中接收对象要使用指针
    11. OC中实例化对象先申请内存空间alloc,然后调用init实例化对象

    案例
    Student.h
    #import<Foundation/Foundation.h> @interface Student : NSObject{ //成员变量都写在此处 int _age; int _no; } //声明方法 -(void)age;//get方法 -(void)no;//get方法 -(int)setAge:(int)age;//set方法 -(int)setNo:(int)no;//set方法 //两个参数的set方法 -(int)setAge:(int)age andNo(int)no;//set方法方法名是setAge:andNo: @end

    Student.m
    #import "Student.h" @implementation Student //实现方法 -(void)age{ return _age; } -(void)no{ return _no; } -(int)setAge:(int)age{ _age = age; } -(int)setNo:(no){ _no = no; } -(int)setAge:(int)age andNo(int)no{ _age = age; _no = no; } @end

    main.m
    #import <Foundation/Foundation.h> #import "Student.h" int main(int argc,const char* argv[]){ @autoreleasepool{ //代码暂时写在此处 //第一种声明对象 //Student *stu = [Student alloc]; //stu = [stu init]; //第二种方式,推荐使用这种方式 Student *stu = [[Student alloc]init]; //调用set方法赋值 [stu setAge:20]; //调用get获取值 int result = [stu age]; NSLog(@"age is %d",result); //调用两个参数的set方法 [stu setAge:20 andNo:30]; //接收值 int r1 = [stu age]; int r2 = [stu no]; NSLog(@"age is %d,no is %d",r1,r2); //对象使用完需要释放 [stu release];//release申请释放,实例化几次就要销毁几次 } }

    相关文章

      网友评论

        本文标题:2.OC类

        本文链接:https://www.haomeiwen.com/subject/rznlqttx.html