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
  • 相关阅读:
    linux查看CPU和内存信息
    linux yum命令详解
    查看文件中关键字前后几行的内容
    vue.js+web storm安装及第一个vue.js
    android GPS: code should explicitly check to see if permission is available
    ASP.NET MVC Identity 使用自己的SQL Server数据库
    阿里云服务器,tomcat启动,一直卡在At least one JAR was scanned for TLDs yet contained no TLDs就不动了
    ASP.NET MVC4 MVC 当前上下文中不存在名称“Scripts”
    python 将windows字体中的汉字生成图片的方法
    Java android DES+Base64加密解密
  • 原文地址:https://www.cnblogs.com/wangsta/p/5218638.html
Copyright © 2011-2022 走看看