Objective-C語言特性
1.Objective-C建立在C語言之上,他是在C語言基礎上添加擴充而來能夠建立和操作對象的一門心的設計語言。
2.Objective-C是ANSI-C的超集,可以混編C和C++代碼。
3.可以在現存C編譯器基礎上實現,不需要編寫全新的編譯器。在mac系統上編寫Objective-C一般都使用xcode編譯器。
4.不支援命名空間機制。一般都是在類別名稱加首碼。在Cocoa編程環境中,所有Mac OS X類別和函數均有“NS”作為首碼,例如:NSString、NSObject等等。
5.不支援運算子多載。只支援單繼承,不允許多重繼承。
6.物件導向最大的特色是訊息傳遞模型,對象不調用方法,而是互相傳遞訊息。
7.不支援內嵌函式。
類定義 一般寫在.h檔案中 類實現寫在.m檔案中,例如:
Person.h#import<Foundation/Foundation.h>@interface Person:NSObject{@privateNSString *name;int age;}@property(noatomic,retain) NSString* name;-(void)setAge:(int)value;-(void)printInfo;@end
Person.m#import"Person.h"@implementation Person@synthesize name;-(int)age{ return age;}-(void)setAge:(int)value{ age = value;}-(void)printInfo{ NSLog(@"name:%@.\n",name); NSLog(@"age:%d.\n",age);}@end
main函數中測試代碼:
Person *person = [[Person alloc] init];[person setName:@"Marry"];[person setAge:32];[person release];
在Objective-C中一對中括弧[]代表訊息傳遞,例如person是訊息接收者,setName是訊息函數。
這裡
@property(noatomic,retain) NSString* name;
是屬性的聲明 對應在.m檔案中 @synthesize name;
如此,則系統自動產生set和get方法。當然,如果自己定義了set和get,則訊息傳遞時調用使用者定義的set和get,不調用系統的。
Objective-C新增資料類型:BOOL
typedef char BOOL;
#define YES 1
#define NO 0
nil和Nil和NULL
Nil 內建類型的指標,對象賦空值
Nil類對象的空值
NULL空值0