一、減號(加號)java
在c++中咱們這樣定義一個函數c++
public void Test(bool flag)數組
{函數
cout<<"hello world!!"<<endl;ui
}this
而在objective c中是:指針
-(void)Test:(bool)flag對象
{three
NSLog(@"hello world!!");圖片
}
其中「-」表示一個函數、或者消息的開始,其實就是方法,其實仍是比較容易看懂的,(-)(函數返回類型)函數名:(參數類型)參數名,其中若是是多個參數時會稍稍有些不同,其形式以下:
(-)(函數返回類型)函數名:(參數類型)參數名 secondPara:(參數類型)參數名 threedPara:(參數類型)參數名....
而對於c++而言,則是 public void Test( string str1,string str2,string str3);調用的時候通常都是this.Test("hello"," world","!!!!");
對於objective c而言,調用則會有些繁瑣,即[self Test:@"hello" secondPara:@"world" threedPara:@"!!!!"];
其中在實例和函數之間的空格表示調用的關係了,然後面則是參數了其中每一個參數之間用空格隔開,這和定義的形式是同樣的,其中secondPara、threedPara能夠更改,只要在調用的時候同樣就能夠了。注self就是等價this指針。
二、中括號
在c++中咱們調用函數通常是this.Test("hello world!!!");而在objective c中是[self Test:@"hello world!!!"];
三、NS**
對於這種命名方式,其實和歷史有關,就是neststep的意思,是當年喬布斯建立的公司。還能夠看到其餘一些打頭的類,好比CF,CA,CG,UI等,CF說的是Core Foundation,CA說的是Core Animation,CG說的是Core Graphics,UI說的是iPhone的User Interface……
四、#import
學過java的就知道,這就是導入的意思,其實就是等價c++中的#include。
五、@interface等
c++中咱們定義個類:
public class Test:public Object
{
string m_str;
int m_count;
void printOut(int count=0)
{
if(count = 0)
m_count = count;
sprintf(m_str,"this %d coming in",m_count);
cout<<"m_str"<<endl;
}
}
objective c的定義以下:
Test.h文件定義
@interface Test:NSObject{
NSString str1;
NSString str2;
}
-(void)printOut;
@end
Test.m文件以下
#import "Test.h"
@implementation Test
-(void)init{
str1=@"hello world!!!";
str2=@"l am coming!!";
}
-(void)printOut:{
NSLog:(str1);
NSLog:(str2);
}
@end
五、函數調用
c++中調用Test myTest = new Test(),myTest .printOut("hello world!!!");而後再最後的delete對象。
在objective c中咱們是須要這樣[[[Test alloc] init:@"hello world"] aurorelease];
六、其餘
1).在objective c中id是一個特殊的變量類型,其實就是能夠表示全部類型,當不知道變量類型的時候就可使用它,
2).對於NSArray是一個能夠存放不一樣數據類型的數組,各類數據類型,如浮點、字符串、圖片等全部。
3).objective c中的 YES等價於 TRUE,NO 等價於 FALSE。
4).IBOutlet、IBAction這兩個東西其實在語法上沒有太大的做用,若是你但願在Interface Builder中能看到這個控件對象,那麼在定義的時候前面加上IBOutlet,在IB裏就能看到這個對象的outlet,若是你但願在Interface Builder裏控制某個對象執行某些動做,就在方法前面加上(IBAction)。