黑馬程序員——十分鍾讓你明白Objective-C的語法(和Java、C++的對比)——黑馬 IOS 技術博客


------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------

http://blog.csdn.net/totogo2010/article/details/7632384

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

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

頭文件:

 

實現文件, 類似於C++的.cpp文件:




一、函數的對比

helloworld方法
Java 語言:

[cpp] view plaincopy
  1. public void helloWorld(bool ishelloworld) {  
  2. //干點啥  
  3. }  
C++語言:
[cpp] view plaincopy
  1. void helloWorld(bool ishelloworld) {  
  2. //干點啥  
  3. }  
Objective-C語言:
[cpp] view plaincopy
  1. -(void) HelloWorld:(BOOL)ishelloworld{  
  2. //干點啥  
  3. }  

前面帶有減號(-) 的方法為實例方法,必須使用類的實例才可以調用的。對應的有+號, 代表是類的靜態方法,不需要實例化即可調用。



二、消息。
消息的定義:向對象發送信息。
 消息是ios的運行時環境特有的機制。 和C++,Java下的類,或實例調用類或實例的方法類似。我這說的是類似,他們的機制實際上是有很大的差別。
例子:
[object  message]
[cpp] view plaincopy
  1. [object  message:param1 withParameter:param2]  
  2. NSString *string;    
  3. 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


四、頭文件中的方法

例子:

[cpp] view plaincopy
  1. -(returnType)method  
  2. -(returnType)method:(dataType)param1  
  3. -(returnType)method:(dataType)param1 withParam:(dataType)param2  

類似於:
C/C++/Java
[cpp] view plaincopy
  1. returnType method()  
  2. returnType method(param1)  
  3. returnType method(param1,param2)  

五、self 
指向自己的指針
[self method]

類似於:c++/java
this.method();

六、繼承關系和接口實現

例子:

[cpp] view plaincopy
  1. ClassA:ParentA  
  2. ClassA:ParentA<Protocol>  
  3. ClassA <Protocol>  

類似於:
java:
[cpp] view plaincopy
  1. ClassA extends ParentA  
  2. ClassA extends ParentA implements interface  
  3. 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是通過垃圾回收器管理內存的。



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: