A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© c9527 中级黑马   /  2015-11-5 08:58  /  992 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类的基本用法{:2_32:}
#import <Foundation/Foundation.h>
// 大体上就是include, 用于包含头文件, 但是即使头文件中, 没有ifndef defined endif, 仍然能够踢除重复包含的头文件
// ----@interface section----
// OC中声明和实现是分离的, 两个都必须有.
@interface Fraction : NSObject {    // @interface 类名: 父类名字
// 在这里声明成员变量, 在OC中称为字段, 描述类的对象的属性
// 只有成员变量需要在外部提供接口, 或者是需要被继承的时候, 才需要在.h文件中定义成员变量, 其他情况下只需要在.m文件中, 声明全局变量即可
   int _numerator;    // 在类内一律使用成员变量, 在类外使用属性
   int _denominator;
}
@property (nonatomic, assign) int numerator, denominator;
-(void) setNumerator: (int) n;        // 声明方法
-(void) setNumerator: (int) n andDenominator: (int) d;
-(Fraction *) init;    // 或者使用-(id) init; OC中只要是以init开头的都是构造函数, 可以带参数
@end

// ---@implementation section----方法的实现---实例方法(以-号开头)----类方法(以+号开头)
@implementation Fraction        // @implementation 类名
@synthesize numerator = _numerator, denominator = _denominator;
-(void) setNumerator: (int) n andDenominator: (int) d;
{
  _numerator = n;
  _denominator = d;
}
-(Fraction *) init
{
  if (self = [super init]){
  // super是指向父类的指针, super的值和self一样, Fraction中不仅有自己的成员变量, 还有父类中的内容, 因此初始化的时候, 要先初始化父类的内容, 然后再初始化自己本身的内容.
   _numerator = _denominator = 0;
  }
  return self;        // self是当前对象的地址, 也相当于一个成员变量
}

@end

// ---- program section ----主函数部分

int main (int argc, const char * argv[])
{

   @autoreleasepool {            // 为自动释放池在内存中保留了空间

       Fraction *myFraction = [[Fraction alloc] init];        // 声明一个类的对象,分配内存空间并初始化
   // OC不允许类的对象创建在栈里, 自己写的类的对象只能创建在堆里
       // [Fraction alloc]这个表达式创建一个Fraction的对象在堆空间,表达式的值是该对象的地址, myFraction只是对象的指针
                           // 或者使用 Fraction *myFraction = [Fraction new];
       [myFraction setNumerator: 1];       // 把消息发送给对象,调用setNumerator方法,传递一个参数为1.
   // 调用myFraction指向的对象的方法setNumerator,
       // 对象的地址(不是指针)调用对象的方法, (地址是常量, 指针是变量)
       // 也叫做给对象发送setNumerator消息

     // OC完全兼容C; OC有自己专用的字符串, 同时也兼容C的字符串   
       NSLog(@"The value of myFraction is: ");      // 显示, @表示NSString型字符串对象, 不加为普通字符串   
   }
   return 0;
}

1 个回复

倒序浏览
可以用来学习类了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马