iPhone开发入门(7)--- 从C/C++语言到Objective-C语言

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 20:40 点击:

Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。所以有一定C/C++语言基础理解和掌握Objective-C也会相应的快些。这回,我们将比较着学习Objective-C语言,掌握其语法并理解其思想。

语法
让我们先来看看C++和Objective-C中对于类的宣言 :

C++
 #include "BaseClass.h"

class MyClass : public BaseClass
{
public:
                    MyClass();
    virtual         ~MyClass();

    virtual int     GetValue() const;
    virtual void    SetValue(int     inValue);

    bool            IsValid() const;

    static MyClass* GetInstance();

private:
    int             mValue;
    static MyClass* sInstance;
};

Objective-C
 #import "BaseClass.h"

@interface MyClass : BaseClass

{
    int         mValue;

}

- (int)         getValue;
- (void)        setValue:   (int)   inValue;
- (BOOL)        isValid;

+ (MyClass*)    getInstance;

@end

通过比较上面两段代码,从语法的角度上我们看到 Objective-C 语言有以下特点:

用 #import 取代了 #include
#import 相当于 C/C++ 语言中的 #include+#pragma once。当头文件嵌套包含的时候,它的作用就发挥出来了。
当某一头文件已经被读取后,又一次被 #include 的时候,#pragma once 这会跳过该次读取。
比如我们在C/C++语言的头文件中常常这样定义,就是为了实现 #pragma once 而做的 :1
2
3 #ifndef INCLUDED_BASECLASS_H
#include    "BaseClass.h"
#endif

继承的时候没有限定符
继承都是 public 的。没有构建和虚构函数
成员变量/函数没有限定符
成员变量缺省是 private 的,而函数是 public 的。没有const关键字
没有virtual关键字
Objective-C 中函数缺省的就是 virtual 的。接下来再看看具体的实现 :

C++
 #include    "MyClass.h"
#include    <assert.h>

MyClass*    MyClass::sInstance = 0;

MyClass::MyClass() : mValue(0)
{
}

MyClass::~MyClass()
{
    mValue = -1;
}

int MyClass::GetValue() const
{
    return (mValue);
}

void MyClass::SetValue(int     inValue)
{
    assert(IsValid());
    mValue = inValue;
}

bool MyClass::IsValid() const
{
    return (0 <= inValue && inValue <= 1000);
}

MyClass* MyClass::GetInstance()
{
    if (sInstance == 0) {
        sInstance = new MyClass();
    }
    return (sInstance);
}

Objective-C
 #import "MyClass.h"

static MyClass* sInstance = 0;

@implementation MyClass

- (int)         getValue
{
    return (mValue);
}

- (void)     setValue:  (int)         inValue
{
    NSParameterAssert([self isValid]);
    mValue = inValue;
}

- (BOOL)        &nb

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • UITableView一些方法
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • iphone(object-c)内存管理(1)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1