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
{
@private
NSString *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