標籤:
標頭檔:
實現檔案, 類似於C++的.cpp檔案:
一、函數的對比
helloworld方法
Java 語言:
[cpp] view plaincopy
- public void helloWorld(bool ishelloworld) {
- //幹點啥
- }
C++語言:
[cpp] view plaincopy
- void helloWorld(bool ishelloworld) {
- //幹點啥
- }
Objective-C語言:
[cpp] view plaincopy
- -(void) HelloWorld:(BOOL)ishelloworld{
- //幹點啥
- }
前面帶有減號(-) 的方法為執行個體方法,必須使用類的執行個體才可以調用的。對應的有+號, 代表是類的靜態方法,不需要執行個體化即可調用。
二、訊息。
訊息的定義:向對象發送資訊。
訊息是ios的運行時環境特有的機制。 和C++,Java下的類,或執行個體調用類或執行個體的方法類似。我這說的是類似,他們的機制實際上是有很大的差別。
例子:
[object message]
[cpp] view plaincopy
- [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
四、標頭檔中的方法
例子:
[cpp] view plaincopy
- -(returnType)method
- -(returnType)method:(dataType)param1
- -(returnType)method:(dataType)param1 withParam:(dataType)param2
類似於:
C/C++/Java
[cpp] view plaincopy
- returnType method()
- returnType method(param1)
- returnType method(param1,param2)
五、self
指向自己的指標
[self method]
類似於:c++/java
this.method();
六、繼承關係和介面實現
例子:
[cpp] view plaincopy
- ClassA:ParentA
- ClassA:ParentA<Protocol>
- ClassA <Protocol>
類似於:
java:
[cpp] view plaincopy
- ClassA extends ParentA
- ClassA extends ParentA implements interface
- ClassA implements interface
objective-c的 Protocol和c++、java的介面類似。
七、null 指標
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是通過記憶體回收行程管理記憶體的。
oc與java c++文法區別