十分钟让你明白Objective-C的语法(和Java、C++的对比)
2019獨角獸企業重金招聘Python工程師標準>>>
很多想開發iOS,或者正在開發iOS的程序員以前都做過Java或者C++,當第一次看到Objective-C的代碼時都會頭疼,Objective-C的代碼在語法上和Java, C++有著很大的區別,有的同學會感覺像是看天書一樣。不過,語言都是相通的,有很多共性。下面列出Objective-C語言的語法和Java,C++的對比,這樣你就會很容易Objective-C的語法是怎么回事了。
先目睹一下Objective-C頭文件和實現文件里都有什么:
頭文件:
?
實現文件, 類似于C++的.cpp文件:
一、函數的對比
helloworld方法
Java 語言:
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 "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
四、頭文件中的方法
例子:
類似于:
C/C++/Java
returnType method() returnType method(param1) returnType method(param1,param2)
五、self?
指向自己的指針
[self method]
類似于:c++/java
this.method();
六、繼承關系和接口實現
例子:
類似于:
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;
?objective-c的和C++里的(void*)類似
PS:Objective-C和Java一樣,都有運行時環境,有內省的能力。Objective-C和java有很多不同的地方,在iOS系統里,Objective-C的內存需要自己管理,添加了ARC機制后編譯器幫助了Objective-C ?添加release釋放的代碼。而Java是通過垃圾回收器管理內存的。
著作權聲明:本文由http://blog.csdn.net/totogo2010/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者博客鏈接,謝謝!
轉載于:https://my.oschina.net/201003674/blog/288865
總結
以上是生活随笔為你收集整理的十分钟让你明白Objective-C的语法(和Java、C++的对比)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .js——alert()语句
- 下一篇: php 数据类型转换与比较