Objective C学习总结(二)
总结一犯了个错误,自己先总结反思下
总结意在使记忆更深刻,而不是拿出来作秀的,简单明了即可,不能废话太多。
总结(一)里回顾了.h文件中的类的说明
这里回顾.m文件中实现接口的函数体
(之所以用.m来做扩展名,m代表message,愿意为objective-c是基于消息的)
和c/c++一样,obj-c的.m文件,开始也是引入头文件部分
c/c++用的是
#include
obj-c则是
#inport
书上说#inport要优于#include,真假其实不重要,无所谓的事情。
关于是
#inport "头文件.h"
还是
#inport <头文件.h>
很容易理解,和c/c++,标准库,系统等头文件用<>,自定义的用的”“。
@implementation 类名
@end
这个区域内是放类接口具体实现的,如下:
#import "Recipient.h" @implementation Recipient - (id) hello { printf("Recipient says hello!\n"); return self; } @end
这里实现的是类Recipient的hello接口。vc里,用 :: 来标记具体的函数是属于哪个类的。而obj-c则是通过@implementation
来标记。这两者有何不同,有什么优劣之分吗?
简单的例子代码:
#import<Foundation/Foundation.h> int main(int argc, char *argv[]){ NSAutoreleasePool * pool = [NSAutoreleasePool new]; NSLog(@"Hello World!"); [pool drain]; return 0; }
main函数同c/c++,但函数调用就不太一样了
obj-c里,据说不是函数调用,而是向某个对象发送消息。一切的一切的一切的流程都是基于消息的(这也就是为啥文件扩展名用.m)
NSAutoreleasePool * pool = [NSAutoreleasePool new];
这句代码用c/c++来解释,就是
NSAutoreleasePool * pool = new NSAutoreleasePool;
只是函数的调用,变成了消息的传递。这样做的好处是,可以更灵活,一个类可以接收或者转发自己未定义的消息。而如果函数调用的话,编译就会报错。
感觉这样做,是要比c/c++好。
NSLog(@"Hello world!");
NSLog,就相当于MessageBox,只是box是弹出,这个是输出信息。
这里@是告诉编译器,后边的字符串,当做一个NSString来处理