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

原创 2012年06月05日 00:02:58

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

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

头文件:

 

实现文件, 类似于C++的.cpp文件:




一、函数的对比

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*)类似

PS:Objective-C和Java一样,都有运行时环境,有内省的能力。Objective-C和java有很多不同的地方,在iOS系统里,Objective-C的内存需要自己管理,添加了ARC机制后编译器帮助了Objective-C  添加release释放的代码。而Java是通过垃圾回收器管理内存的。


著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!


                    
版权声明:本文为博主原创文章,未经博主允许不得转载。

Objective-C语法之类和对象

1、类和方法下图中是一段的类声明的语法展示,声明了一个叫做 MyClass 的类,它继承于根类:NSObject。(根类可以被所有的其他类直接或间接继承。)下图是一个方法的语法展示,方法的声明由以下几...
  • totogo2010
  • totogo2010
  • 2012年07月02日 17:19
  • 16440

Objective-C语法快速参考

大部分有一点其他平台开发基础的初学者看到XCode ,第一感想是磨拳擦掌,看到 Interface  Builder 之后, 第一感想是跃跃欲试,而看到Objective-C 的语法,第一感想就变成...
  • ldl22847
  • ldl22847
  • 2012年04月24日 15:42
  • 8668

Objective-C 内存管理

声明 欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。 文章出处:http://blog.csdn.net/iukey 大概是因为 Obje...
  • iukey
  • iukey
  • 2012年03月06日 10:51
  • 8265

Objective-C Programming中文版

  • 2015年12月29日 15:35
  • 19.16MB
  • 下载

Objective-C语法之代码块(block)的使用

代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义...
  • totogo2010
  • totogo2010
  • 2012年08月07日 16:12
  • 179173

Objective-C中的@dynamic

Objective-C中的@dynamic   一、@dynamic与@synthesize的区别 @property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@...
  • haishu_zheng
  • haishu_zheng
  • 2013年10月19日 18:23
  • 50567

Objective-C的参考资料

大綱 開始吧 下載這篇教學設定環境前言編譯 hello world 創建 Classes @interface@implementation把它們湊在一起 詳細說明... ...
  • yayupg
  • yayupg
  • 2013年05月22日 13:13
  • 342

Objective-C 中的id到底是什么

今天我就要来看清楚,id,你到底是个什么东西?
  • u013230511
  • u013230511
  • 2015年01月08日 08:22
  • 1287

Objective-C、C++以及C之间的区别

原文传送门:http://blog.csdn.net/dqjyong/article/details/7663866        随着ios开发的兴起,Objective-C语言收到了广大移动开发者...
  • lengshengren
  • lengshengren
  • 2014年01月04日 09:45
  • 9121

objective-c基本数据类型

objective-c基本数据类型 1、Object-c提供基本数据类型:int、float 、double 、char     示例代码测字节数: //数据类型: ...
  • rhljiayou
  • rhljiayou
  • 2012年03月27日 15:32
  • 11168
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:十分钟让你明白Objective-C的语法(和Java、C++的对比)
举报原因:
原因补充:

(最多只允许输入30个字)