心血来潮 这两天找了一本<深入浅出Object-C2.0 > 边看边写,主要把注意点草草记录下来,以后可以稍微查看下 这本书比较入门,理论上没C基础都可以学,里面有介绍C基础已经Object-C
类的命名: ----------------------------------------------------------------------Object-C中: 子类 :父类 @interface MyObject :NSObject @end C++中: class MyObject : public NSObject{ }; 实例变量的声明: ---------------------------------------------------------------------- @interface MyObject :NSObject { int count; int index; } @end 在@interface 与@end 中间追加{}后加入 实例方法的声明: ---------------------------------------------------------------------- @interface MyObject :NSObject { int count; int index; } - (int)count; @end ★声明无参数的方法的语法为: - (返回值类型)方法名; ☆开头的"-"不可少,间隔一个空格后 //下面的是C++的声明方法; Class MyObject : public NSObject{ int count; int index; int count(); } ★一个参数的方法 @interface MyObject :NSObject { int count; int index; } - (int)count; - (void)setCount:(int)count; @end ☆- (返回值类型)函数名 :(参数类型)参数名; //下面的是C++的声明方法; Class MyObject :public NSObject{ int count; int index; int count(); void setCount(int count); } ★多个参数的方法 @interface MyObject :NSObject { int count; int index; } - (int)count; - (void)setCount:(int)count; - (void)setCount:(int)count andIndex:(int)index; @end ☆- (返回值类型)函数名 :(参数类型)参数名 标签:(参数类型)参数名; ★编写方法体 #import "MyObject.h" @implementation MyObject -(int)count { return count; } @end //C++的代码 int MyObject::count(){ return count; } ★实例对象专用的变量类型 MyObject* object; NSString* string; 特殊类型 id类型 nil类型 在条件表达式中使用对象变量 if(string){ //string对象有效时处理 }else{ //string对象无效时处理 } ★方法调用 MyObject* object //将MyObject实例化 ... //调用count方法 int count; count = [object count]; 返回值 = [实例 方法名] 首先有返回值,方法需要等号右边有中括号 其他多参数的方法的调用 [object setCount:10] [object setCount:10 andIndex:6] //C++中 MyObject* objecty; object = new MyObject(); //调用count方法 int count; count = object->count(); object->setCount(10); object->setCountandIndex(12,16); ★类方法的调用 跟实例方法调用类似 int count; count = [MyObject count]; ★对象为nil的情况下 当变量为nil时,任何调用都将被忽略,而不会出现任何的错误。不管类型如何都返回0. ★retain和release方法 NSObject -(id)retain 参照本对象,参照统计值加1,返回自己作为返回值,经常用于对象的实例化操作 -(void)release 解除对本对象的参照,参照统计值减1,如果参照统计值变为0,则释放本对象 ★类的实例化与初始化 实例化方法alloc NSObject +(id)alloc 进行累的实例化,返回值为实例化对象 最基本的初始化方法是init() NSObject +(id)init 实例化的基本动作其实是alloc与init方法的连续调用 MyObject* object; object = [[MyObject alloc] init] 连续调用[[类名 alloc] init]连续调用 相当于C++中的new,因为OC里面没有构造方法 自动释放autorelease方法 NSObject +(id)autorelease 进行实例的自动释放。返回为自己 例如 MyObject* object; object = [[[MyObject alloc] init] autorelease]; 实例的释放dealloc NSObject -(void)dealloc在实例释放前调用 -(void) dealloc { [document release]; [super dealloc];//务必要加上去 } 临时对象 NSAutoreleasePool 自动释放是由NSAutoreleasePool实现的,定时垃圾袋 创建实例,调用注册所有对象的release。。。 2012-09-14 09:54:06 ------------------------------------------------------------------------------- NSString与NSMutableString NSObject <- NSString <- NSMutableString 使用NSString,一旦生成实例后不可改变字符串的内容 NSString用于处理固定的,NSMutableString用于处理可变的 Unicode支持所有语言 字符串的生成 ------------------------------------------------------------------------------- 使用@""形式创建新字符串 //C字符串 char* cString ="This is C String"; //NSString实例 NSString string = @"This is Nsstring"; 因为在Object-C里面C也可以正常使用,但是两者是完全不同的 ★创建中文字符串 stringWithCString:enconding: 和 initWithCString:encoding: NSObject +(id)stringWithCString:(const char*)cString encoding:(NSStringEncoding)encoding; -(id)initWithCString:(const char*)cString encoding:(NSStringEncoding)encoding; 前一个方法是创建自动释放类型的实例,后一个方法是在执行alloc方法后,进行初始化的 使用格式化创建字符串 NSObject +(id)stringWithFormat:(NSString*)format... -(id)initWithFormat:(NSString*)format... 新的替换符%@ 例子 ------------------------------------------------------------------------------- NSString* str1 str1 = @"Mac"; //指定NSString的实例来创建字符串 NSString* str2 str2 = [NSString stringWithFormat:@"%@ pro",str1]; NSLog(str2); //str2 的值为"Mac Pro" ------------------------------------------------------------------------------- NSRange 应用: NSRange range = NSMakeRange(0,5); NSLog(@"location is %d , length is %d ", range.location , range.length); 计算字符串的长度 NSString* str; str = @"Mac os pro"; unsigned int length; length = [str length]; NSLog(@"lenght is %d",length) //length 的长度为10 两个字符串的连接 -(NSString*)stringByAppendingString:(NSString*)string -(NSString*)stringByAppendingFormat:(NSString*)format NSMutableString 的生成 // NSMutableString *string =[NSMutableString stringWithString:@"Mac"]; 追加字符串 ------------------------------------------------------------------------------- NSMutableString* string = [NSMutableString string]; //追加字符串 [string appendString:@"mac"]; ------------------------------------------------------------------------------- 插入 insertString [string insertString:@"OS" atIndex:4]; 删除 [string deletecharactersInRange:NSMakeRange(0,1)]; 字符串的比较 isEqualToString: 比较前置串和后置串, hasPrefix: 与 hasSuffix: NSString *string1 = @"Mac Pro"; result = [string1 hasPrefix:@"mac"];//返回的是yes 字符串的检索 rangeOfString: 如果找到字符串,侧返回范围 -(NSRange)rangeOfString:(NSString*)subString; -(NSRange)rangeOfString:(NSString*)subString option:(unsigned)mask; -(NSRange)rangeOfString:(NSString*)subString option:(unsigned)mask range:(NSRange)range; mask选项 ... 抽取部分字符串 substringToIndex,substringFromIndex,substringWithRange 读写文本文件 stringWithContentsOfFile initWithContentsOfFile //读取文本文件,在path中指定合适的路径 NSString *text; NSString *path = @"/text.txt"; NSError *error; text = [NSString stringwithContentsOfFile:path encoding:NSUTF8StringEncoding error:$error]; if(text){ //读入成功的代码 }else{ NSLog([error localizedDescription]); } 输出文本文件 writeToFile 数组 ★------------------------------------------------------------------------------- NSArray 与 NSMutableArray NSString *name[6]; NSArray *array; array =[NSArray arrayWithObjects:@"Tom",@"Tom",@"Tom",@"Tom",nil]; ★最后一个参数指定为nil; 数组的长度 [array count]; 通过索引取得对象 ObjectAtIndex: 使用NSEnumerator取得对象 nextObject方法 objectEnumerator方法 NSEnumerator *enumerator; enumerator =[array objectEnumerator]; ... while(str = [enumerator nextObject]{ //输出 .... } 使用高速枚举法取得对象 for(变量定义 in 对象集合){ ... } 对象的追加与删除 创建空数组 array 对象追加 addObject:(id)object 最近数组array中包含的所有对象 addObjectsFormArray:(NSArray *)array 在索引index中插入对象 insertObject 将索引index出的对象替换成对象object replaceObjectAtIndex 将数组中所有的对象替换为数组array中的元素 setArray: 对象的删除 removeAllObjects ... 字典 "cpu" => "intel xx" 键值对 NSDictionary NSMutableDictionary 指定键值创建 NSDictionary *dict; dict = [NSDictionary dictionaryWithObject:@"Inter core " forKey:@"cpu"]; array =[NSArray arrayWithObjects:@"Tom",@"Tom",@"Tom",@"Tom",nil]; array2 =[NSArray arrayWithObjects:@"Tom",@"Tom",@"Tom",@"Tom",nil]; dict = [NSDictionary dictionaryWithObjects:array forKeys:array2]; 键值对的形式创建 dict = [NSDictionary dictionaryWithObjectsAndKeys:@"key1",@"value1",@"key2",@"value2",nil]; 键值的取得 NSString *cpuType = [dict objectForKey:@"cpu"]; 取得全部键值对 NSEnumerator *e = [dict KeyEnumerator]; while (key = [e nextObject]){ NSString *value; value = [dict objectForKey:key]; //输出... } 键值追加 生成空的字典 dictionary 追加 setObject:(id)object forKey:(id)key; 删除 removeAllObjects ------------------------------------------------------------------------------- 包装类 ------------------------------------------------------------------------------- NSNumber 对象的等价与同值 同值判断 isEqual isEqualToString ★键对象不是原始的,而是复制的,但是值则是直接追加的 ------------------------------------------------------------------------------- 表格视图 NSTableView 与 NSTableColumn
|
|