标签:
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 { /* * 实例变量声明在花括号{}中 * 另一种声明方法为 @property (SomeType) someVar; 在花括号外 * 私有成员@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
标签:
原文地址:http://www.cnblogs.com/wangsta/p/5218638.html