1.Objective-C是C的超集,所以C能使用的代码,Objective-C也能使用
2.Objective-C代码使用.m文件而不是.c/.cpp
3.Objective-C导入头文件使用#import "xxx.h"或者import
所以在头文件里没必要使用 #ifndef 或者 #program once来避免一个文件被包含多次了
4.方法和消息
Objective-C中,想执行一个类或者对象的方法,可以发送一条消息给类或者对象
在下面的代码中的[NSDate date],其中NSDate就是消息接受者,这是一个类,而date则是消息
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDate *now=[NSDate date];
NSLog(@"now's address is %p\n",now);
NSLog(@"now is %@\n",now);
double seconds=[now timeIntervalSince1970];
NSLog(@"since 1970 is %.2f s\n",seconds);
}
return 0;
}
date方法执行后,会做以下事情
- 在堆上分配一个NSDate的对象
- 将这个对象初始化为当前的日期/时间
- 返回这个对象的地址
这类似于C++里的静态成员函数
class NSDate{
public:
static NSDate date();
}
同样,也可以将对象作为消息的接受者,例如上面的[now timeIntervalSince1970]
5.发送消息时,也可以传递参数,如下面的代码
writeToFile接受四个参数,其中automcally,encoding,error不应该理解为参数名,而是方法名的一部分
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSHost *host=[NSHost currentHost];
NSString *hostName=[host localizedName];
NSLog(@"主机名 is %@\n",hostName);
[hostName writeToFile:@"/tmp/cool.txt" atomically:YES
encoding:NSUTF8StringEncoding
error:NULL];
}
return 0;
}
6.每个Objective-C类都有一个默认的创建对象方法,例如
NSDate *now=[[NSDate alloc] init]
7.与大多数面向对象编程语言不同,Objective-C允许向一个空对象(nil)发送消息,例如
now=nil;
double seconds=[now timeIntervalSince1970];