Objective-C introduction

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

去我的目录

这是我在csdn的第一篇blog,想和大家分享我学习iphone开发的经验。也希望借着写Blog来督促自己学习。

 

iphone使用objective c 作为其开发语言(apple真是屌啊,就他们家用objective c吧。。),在学习iphone sdk之前,我们先看看objective c的基本特点吧。

 

objective c是一种c语言的变种,所以有时候在objective c中能看到写c语言的影子。

先列举几个浅显的objective c和c 的不同之处吧

1. objective c使用 nil 来表示 NULL

 

2. objective c用 YES NO 来表示 true false

 

3. objective c用 #import<stdio.h> 而不是#include<stdio.h>来包含头文件

 

4. 在objective c中,我们称类的方法(method)为消息(message)。在C++中,我们这样来调用方法: aClass->function(var); 但是在objective c中,我们使用 [aClass function:var]

objective c中的消息(message)比较有意思的特点是:

1) 调用消息的类可以不知道如何响应这个消息。如果它不知道如何处理这个消息,它会自动的将这个消息转给其他的类,比如它的父类;

2)调用消息的类可以是nil。在C++中,在使用类方法之前,我们都需要检查对象是否为空,所以在实现析构函数的时候,常会有如下的代码,如if (var) { delete var; } 但是在objective c中,我们就可以直接写[var release];  即使var == nil, 也不会有问题。

 

照着老规矩,先写个hello world

#import <stdio.h>

int main( int argc, char* argv[] ) {

   printf( "hello world/n" );

   return 1;

}

 

确实跟C很像吧。但是也不其然,objective c是一个很好的面向对象的语言。跟C还是有挺多不同之处。

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

我们先实现一个简单的类。

// Sample.h

#import <Foundation/NSObject.h>

@interface Sample: NSObject {

   int a;

}

- (void) print;

- (void) setA: (int)a;

@end

 

咱们一句一句来看。

#import <Foundation/NSObject.h>

在objective c中,所有的类都必须继承NSObject,这个概念很想Java里面的Object。

 

objective c声明类的格式如下:

@interface className: baseClassName {

   member variables;

}

member functions

@end

 

大家可能注意到objective c中函数的声明挺有特点的,我们现在来解释:

objective c的函数声明的基本格式如下

-/+ (return type) function_name;

-/+ (return type) function_name : (parameter type) parameter;

-/+ (return type) function_name : (parameter type) parameter1 otherParameter : (parameter_type) parameter2;

1) -/+: 这个称做scope, 如果在函数前面是- ,那么理解为一般的函数;如果是+, 可以理解为c++中的static函数

2) 函数的参数声明: objective c和 c++, java都很不一样。

如果没有参数的话,在函数名后面,可以什么都不写;

如果只有一个参数,在 : 后面声明参数的类型和名称;

如果有多个参数的话,每个参数前面都要有一个 : , 然后接着是参数类型和参数名称。可是大家可能还是觉得很奇怪。比如上面这个例子中, otherParameter 这个东西是干什么的呢?在objective c中,对于有多个参数的函数,我们可以理解为将函数的名称拆成了几个部分,每个部分都是对紧接着的参数的一个解释。比如在C++中:void initializeRectangle(int x1, int y1, int x2, int y2) , 但是我们并不知道这些参数都是什么意思;但是在objective c中,我们可以这样声明:void initializeRectangeWithLeftUpX: (int)x1 LeftUpY: (int)y1 RightBottomX: (int)x2 RightBottomY:(int)y2;

怎么样?有感觉了吧。

 

下面来实现这个简单的Sample类

// sample.m

#import <stdio.h>

#import "Sample.h"

@implementation Sample

- (void) print {

    printf( "%d/n", a );

}

- (void) setA : (int) aa {

   a = aa;

}

@end

 

使用这个类

#import "Sample.h"

int main( int argc, char* argv[] ) {

    Sample* smp = [[Sample alloc] init];

    [smp setA:1];

    [smp print];

    [smp release];

}

在objective c中,每一个类的对象都是一个指针,这和Java差不多(每个类的对象都用new声明)。alloc类似于C中的malloc, init是NSObject中的方法,用于初始化这个对象。如果我们实现了自己的初始化方法,也可以调用自己的初始化方法。使用完毕后,需要调用release释放空间。

在iPhone开发中,需要特别注意内存的管理。今后还会仔细些这部分的内容。

 

今天先写这么多。未完待续:)

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

<script type="text/javascript"> </script> <script type="text/javascript"> </script>

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值