Objective-C 03

来源:互联网 发布:中怡康家电市场数据 编辑:程序博客网 时间:2024/05/24 05:29

1.预处理程序

#define

有时候为了方便将define定义到头文件,这样在需要时只引用这个头文件即可。在本源文件中,可以在任何地方定义,但一定要在使用前定义。

预定义的名称习惯:一 习惯全部用大写字母 二 习惯第一个字母用k表示。

#define TWOMPI 2*MPI
#define MPI 3.1415926  这样定义也是合法的  不分前后顺序

#运算符 ##运算符

#define printInt(var) printf(# var "=%i",var)

调用时

int count= 101;

printInt(count);

相当于printf("count=%i",count);

定义宏?

#define可以定义在一个.h文件里从而在需要引用的地方用#import引用头文件


 条件编译

#ifdef #else #endif


NSProcessInfo 

The NSProcessInfo class provides methods to access information about the current process. Each process has a single, shared NSProcessInfo object, known as process information agent.(该类提供一些方法访问当前进程的信息,每个进程都有一个唯一的NSProcessInfo对象

NSFileHandle

The NSFileHandle class is an object-oriented wrapper for a file descriptor. You use file handle objects to access data associated with files, sockets, pipes, and devices. For files, you can read, write, and seek within the file. For sockets, pipes, and devices, you can use a file handle object to monitor the device and process data asynchronously.

(该类封装了文件的描述,你可以用该类实例访问文件数据,套接字,管道和设备。对于文件,你可以读写会在文件中追写,对于管道和设备,你可以监控设备和异步操作数据)


NSData

NSData and its mutable subclass NSMutableData provide data objects, object-oriented wrappers for byte buffers. Data objects let simple allocated buffers (that is, data with no embedded pointers) take on the behavior of Foundation objects.

(该类封装的是  字节流)

truncateFileAtOffset

截断一个文件的内容 如offset=10 则截取10个字符

Objective-C  ARC 内存管理机制

引用计数:创建一个对象时,引用计数设置为1,每次必须保持该对象时,就发送一条retain消息,使引用次数加1,不需要该对象时可以发送一条release消息,使对象的引用次数减1,当引用计数为0时则向对象发送一条dealloc消息,释放该对象占用的内存。


一个低级错误

 Member *m1 = [[Member alloc] init];
        Member *m2;
        [m1 setName:@"Sam"];
        [m1 setAge:12];
        [m1 setSex:@"M"];
        [m1 setHeight:1.74f];
        NSLog(@"m1 %@....%i....%g.....%@",m1.name,m1.age,[m1 height],[m1 sex]);
        
        if([NSKeyedArchiver archiveRootObject:m1 toFile:@"member.arch"]==NO){ //需要实现NSCoding协议
            NSLog(@"write failed!");
            return 1;
        }
        m2 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"member.arch"];
        NSLog(@"m2 %@....%i....%g.....%@",m2.name,m2.age,[m2 height],[m2 sex]);

第二个一直输出0 和null

原因没有在实现文件加@synthesize 属性存取方法