Objective-C 基础(一)

Class and Object

#import <Foundation/Foundation.h>
@interface Car : NSObject
{
int year;
NSString *make;
NSString *model;
}
- (void) setMake:(NSString *) aMake andModel:(NSString *) aModel
andYear: (int) aYear;
- (void) printCarInfo;
- (int) year;
@end

1.类首字母要大写,方法则小写,另外OB C 通常对方法是用驼峰命名法(如identifiersLikeThis),方法用-开始定义;

2.@interface 和 @end 是接口的开始与结尾, 变量放在{ }之间;该示例里面, 整形 int, 字符类型NSString(NSString属于Cocoa Touch object library,可以获得字符串的长度、进行查找、反向、获取文件名后缀。。。);

3.setMake:andModel:andYear 是一个带三个参数的方法,调用方式 [myCar setMake:c1 andModel:c2 andYear:i];

4.OB C里面通常用#import 来导入头文件而不是 #include, 因为#import 可以自动跳过已经导入的文件而不会重复导入;

 

Creating Objects

1.OB C里面方法的调用形式为 [object message];
2.创建对象用alloc 分配内存,再init 来初始化对象;上述例子里面,初试一个Car对象占用16bytes空间,其中两个指针各占4bytes,一个整形int 占4bytes,继承 NSObject也占 4 bytes, 所以一共需要 16bytes空间;

 

NSObject *object = [[NSObject alloc] init];
Car *myCar = [[Car alloc] init];
// This returns 4, the size of an object pointer
printf("object pointer: %d\n", sizeof(object));
// This returns 4, the size of an NSObject object
printf("object itself: %d\n", sizeof(*object));
// This returns 4, again the size of an object pointer
printf("myCar pointer: %d\n", sizeof(myCar));
// This returns 16, the size of a Car object
printf("myCar object: %d\n", sizeof(*myCar));

 

 Releasing Memory

在OB C里面,释放内存有automated reference counting (ARC)和manual retain/release(MRR)两种机制,

MRR需要手工指定来释放一个对象 [object release]; IOS5开始则可以使用ARC来自动释放对象;

 

Understanding Retain Counts with MRR

在OB C里面,每一个对象都有一个保留数,在非ARC编译的项目里面,可以通过[object retainCount]来显示该对象的保留数,通常每个未销毁的保留数都是1,对于已经释放的对象变量,最好习惯是把其指针指向 nil,从而避免释放后产生的非法访问错误;

 

 

 

posted @ 2012-12-02 22:16  Ivan的coding世界  阅读(153)  评论(0编辑  收藏  举报