zoukankan      html  css  js  c++  java
  • Object C初学学习笔记(1)

    最近开始学习IOS编程,自然开始接触了Object C 语言,下午看着例子进行了手动尝试了编码,对整个语言有基本的了解。

    在Xcode创建Object C class文件,基本的class文件结构相比java语言 ,还是是简单多了,整体的文件结构

    首先是头文件,后缀是以 .h头文件,这个文件定义了class的基本结构,有点类似一个类模板,定义class的结构信息

    头文件部分

    #import <目录/头文件.h> //代表只引入系统库的类的头文件

    #import "目录/头文件.h" // 代表默认从当前路径下搜索是否存在对应的头文件,如果不存在,则从系统库里面

    类变量部分

    static 变量类型 变量名 = 初始值 //其中初始值可以没有

    类定义以及成员变量定义部分,框架

    @interface  XXClass:NSObject <ProtocolA,ProtocolB>{

      @public int a;

      @private float b;

          @protected int c;

    }

    @代表Object C 在C语言的基础上 新引入的关键字的前缀

    @interface代表这个是一个类定义,这个和java里面的interface不一样

    XXClass代表定义的类名

    :NSObject 代表继承了NSObject对象

    <ProtocolA,ProtocolB> 代表实现了ProtocolA 和 ProtocolB 协议,这个Protocol和java语言里面的interface意义相同

    类成员的变量是在 变量作用域 变量类型 变量名

    接下来定义方法

    -(void) print ;

    -(void) setterA : (int) a;

    -(void) setterABC : (int) a andB:(float) b andC:(int) c

    +(int) toString ;

    方法的定义为 方法所有者(返回值):方法名:(参数类型) 参数变量 下一个参数说明:(参数类型) 参数变量名 下一个参数说明 : (参数类型) 参数变量

    其中 +代表类方法   -代表实力方法 在java里面相当于是否由static修饰符

    其中 方法定义里面多了一个参数说明,这个参数说明有点怪,第一个参数是不能由参数说明的,如果由多个参数,从第二个参数开始,才允许由参数说明,这个参数说明一般情况是在重载的时候使用的,比如我有多个setterValue方法,第一个方法由一个变量,第二个方法有两个变量 ,那么第二个方法里面可以说明第二个变量干嘛用的

    最后一行就是类定义结束 使用 @end标签就可以了

    下面是一个完整的类定义

    #import <Foundation/Foundation.h>

     

    staticint i = 0;

     

    @interface SampleTwoPerson : NSObject<NSCoding>{

        NSString *name ;

        float weight ;

    }

     

    -(SampleTwoPerson*) initNameAndWeight : (NSString*) name andweight:(float) weight andObject:(NSString *) obj;

    -(NSString *) getterName ;

    -(float) getterWeight;

    -(NSString *) toString ;

     

    @end

    接下来是写class的实现文件,实现文件后缀是.m

    首先还是引入头文件,这里面只需要引入定义的class头文件就可以了

    #import "XXClass.h"

    下面就是实现了

    @implementation XXClass

    方法定义 {

      code

      //方法实现代码

    };

    @end

    方法定义和头文件XXClass.h中一样,只需要去掉最后面一个;号即可

    同时还需要实现 类定义里面 需要实现的 Protocol 方法即可。

    #import "SampleTwoPerson.h"

     

    @implementation SampleTwoPerson

     

    -(SampleTwoPerson*) initNameAndWeight : (NSString*) name1 andweight:(float) weight1 andObject:(NSString *) obj;

    {

        self->name = name1;

        self->weight = weight1;

        returnself;

    };

     

    -(NSString *) getterName {

        return name;

    }

    -(float) getterWeight{

        return weight;

    }

    -(NSString *) toString {

        return  name;

    }

     

    //下面两个方法是类定义中的 NSCoding 协议的实现

    - (void)encodeWithCoder:(NSCoder *)aCoder{

        

    }

    - (id)initWithCoder:(NSCoder *)aDecoder{

        returnnil;

    }

     

    @end

    以上就是Object 语言的class文件定义的基本语法。

  • 相关阅读:
    SDN第一次上机作业
    SDN第一次作业
    2017软件工程第二次作业
    Swift基础(一)
    iOS获取当前屏幕显示的viewcontroller
    Swift基础(二)
    属性和点语法
    Delphi 2008 和 C++Builder 将于8月25日发布
    为什么建议使用多重using
    .Net中Timers的学习备忘二
  • 原文地址:https://www.cnblogs.com/aigongsi/p/2436070.html
Copyright © 2011-2022 走看看