zoukankan      html  css  js  c++  java
  • ObjectiveC的语法

    十分钟让你明白Objective-C的语法(和Java、C++的对比)

     

    很多想开发IOS,或者正在开发IOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。

    先目睹一下Objective-C头文件和实现文件里都有什么:

    头文件:

    实现文件:

     

    一、函数的对比
    helloworld方法
    Java 语言:

    复制代码
    public void helloWorld(bool ishelloworld) {
    //干点啥
    }
    复制代码

    C++语言:

    复制代码
    void helloWorld(bool ishelloworld) {
    //干点啥
    }
    复制代码

    Objective-C语言:

    复制代码
    -(void) HelloWorld:(BOOL)ishelloworld{
    //干点啥
    }
    复制代码

    前面带有减号(-) 的方法为实例方法,必须使用类的实例才可以调用的。对应的有+号, 代表是类的静态方法,不需要实例化即可调用。

    二、消息。
    消息的定义:向对象发送信息。
     消息是ios的运行时环境特有的机制。 和C++,Java下的类,或实例调用类或实例的方法类似。我这说的是类似,他们的机制实际上是有些差别的。
    例子:
    [object  message]

    复制代码
    [object  message:param1 withParameter:param2]
    NSString *string;  
    string = [[NSString alloc] initWithString:@"Hello"];  
    复制代码

    上面的代码类似于:
    java/c++:object.message()
    java/c++:object.message(param1,param2)
    java/c++:string *str ;
                 str = new string("Hello");

    三、Import
    例子:
    import "Class.h"
    import <Class.h>
    import <director/Class.h>
    这个和C++里的include ,java的import类似

    四 、Property 和Synthesize

    Property定义:@property 声明用于自动创建property属性变量的getter和setter
    Synthesize定义:@Synthesize声明实现了property属性变量的getter和setter。
    例子:
    在  interface:@property dataType variableName
    在  implementation:  synthesiz variableName

    五、头文件中的方法
    例子:在头文件中声明方法

    复制代码
    -(returnType)method
    -(returnType)method:(dataType)param1
    -(returnType)method:(dataType)param1 withParam:(dataType)param2
    复制代码

    类似于:
    C/C++/Java

    复制代码
    returnType method()
    returnType method(param1)
    returnType method(param1,param2)
    复制代码

    六、self 
    指向自己的指针
    [self method]
     

    类似于:c++/java
    this.method();
    七、继承关系和接口实现
    例子:

    复制代码
    ClassA:ParentA
    ClassA:ParentA<Protocol>
    ClassA <Protocol>
    复制代码

    类似于:
    java:

    复制代码
    ClassA extends ParentA
    ClassA extends ParentA implements interface
    ClassA implements interface
    复制代码

    objective-c的 Protocol和c++、java的接口类似。

    八、空指针

    id obj = nil;
    NSString *hello = nil;

    nil相当与Java中的null;

    九、 id
     objective-c的和C++里的(void*)类似

    著作权声明:本文由http://www.cnblogs.com/stoic/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
  • 相关阅读:
    我要好offer之 二叉树大总结
    我要好offer之 字符串相关大总结
    楼层扔鸡蛋问题[转]
    Linux System Programming 学习笔记(十一) 时间
    Linux System Programming 学习笔记(十) 信号
    Linux System Programming 学习笔记(九) 内存管理
    Linux System Programming 学习笔记(八) 文件和目录管理
    Linux System Programming 学习笔记(七) 线程
    Linux System Programming 学习笔记(六) 进程调度
    APUE 学习笔记(十一) 网络IPC:套接字
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2586261.html
Copyright © 2011-2022 走看看