Obj-C 语言学习 笔记(II)类定义与实现

Obj-C的类定义,与C++一样,头文件和实现文件分开。

注:本文中的例子采用Mitch Fisher, Gary Bennett, Brad Lees所编《Objective-C 初学者指南》一书中的例子。本人编译的环境为Xcode 7。

不知是否因为苹果公司在推swift,个人在.h文件里写东西的时候coding辅助跟不上。在Swift中,类的声明和实现被归在同一个.swift文件中。

头文件中类的声明 - 成员变量部分

//
//  RadioStation.h
//  RadioStation
//
//  Created by 王 颖豪 on 2/25/16.
//  Copyright © 2016 UTT Wangsta. All rights reserved.
//

#import <Foundation/Foundation.h>

#ifndef RadioStation_h
#define RadioStation_h

//以@interface开头标示类定义的开始,以@end结束标示类定义的结束
@interface RadioStation : NSObject
{
    /*
     *  实例变量声明在花括号{}
     *  私有成员@private,受保护成员@protected,公有成员@public
   *
*/ @private NSString *name; double frequency; NSUInteger *band; }

头文件中类的声明 - 成员方法部分:

/*  
 *  方法的定义为 +/- (SomeType)someMessage: (SomeType)var1 secondPara: (SomeType)var2...;
 *  这里和C++有明显的区别,首先编译器默认第一个变量名为方法名。通过call这个方法的第一个变量名来调用。
 *  所以在Obj-C中方法的声明就不能像C++那样可以省去变量名。
 *  方法名的定义还有不少讲究,苹果公司为此制定了一系列的规则。详细可以关注下面这个地址:
 *  http://www.cocoawithlove.com/2009/06/method-names-in-objective-c.html
 */

// +代表类方法(静态方法),-代表实例方法
+ (double)minFMFrequency;
+ (double)maxFMFrequency;
+ (double)minAMFrequency;
+ (double)maxAMFrequency;

- (id)initWithName: (NSString *)newName atFrequency:(double)newFreq;

- (NSString *) getName;
- (void) setName: (NSString *)newName;
- (double) getFrequency;
- (void) setFrequency: (double)newFrequency;

@end


#endif /* RadioStation_h */

类的实现

//
//  RadioStation.m
//  RadioStation
//
//  Created by 王 颖豪 on 2/25/16.
//  Copyright © 2016 UTT Wangsta. All rights reserved.
//

#import "RadioStation.h"

@implementation RadioStation

+ (double)minAMFrequency{
    return 520;
}

+ (double)maxAMFrequency{
    return 1610;
}

+ (double)minFMFrequency{
    return 88.3;
}

+ (double)maxFMFrequency{
    return 107.9;
}

//使用init来初始化类
- (id)initWithName: (NSString*)newName atFrequency:(double)newFreq{
    self = [super init];
    if (self != nil){
        name = newName;
        frequency = newFreq;
    }
    return self;
}

- (NSString*) getName{
    return name;
}

- (void) setName: (NSString *)newName{
    name = newName;
}

- (double) getFrequency{
    return frequency;
}

- (void) setFrequency:(double)newFrequency{
    frequency = newFrequency;
}

@end
原文地址:https://www.cnblogs.com/wangsta/p/5218638.html