zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    liunx-centos-基础命令详解(1) -主要内容来自 —https://www.cnblogs.com/caozy/p/9261224.html
    阿里云搭建香港代理服务器 shadownsocks
    ssh 操作 esxi 基本命令
    surpace pro 检测维修记录
    新的开始
    Linux就该这么学04学习笔记
    博客园添加旋转的正方体特效
    博客园添加鼠标动态线条
    day01 python初识、数据类型、流程控制
    Hadoop学习(1)-hdfs安装及其一些操作
  • 原文地址:https://www.cnblogs.com/wangsta/p/5218638.html
Copyright © 2011-2022 走看看