十分鐘讓你明白Objective-C的語法(和Java、C++的對比)

openkk 12年前發布 | 26K 次閱讀 Objective-C開發 Objective-C

很多想開發IOS,或者正在開發IOS的程序員以前都做過Java或者C++,當第一次看到Objective-C的代碼時都會頭疼,Objective-C的代碼在語法上和Java, C++有著很大的區別,有的同學會感覺像是看天書一樣。不過,語言都是相通的,有很多共性。下面列出Objective-C語言的語法和Java,C++的對比,這樣你就會很容易Objective-C的語法是怎么回事了。

先目睹一下Objective-C頭文件和實現文件里都有什么:

頭文件:

十分鐘讓你明白Objective-C的語法(和Java、C++的對比)  

實現文件:

十分鐘讓你明白Objective-C的語法(和Java、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 ClassA 

類似于:
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://blog.csdn.net/totogo2010/原創。 


</director></CLASS.H>

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!