Objective-C 语法

吧Category使用场景:

-类包含了很多个方法的实现,而这些方法需要不同的团队成员来实现。

-当你在使用基础类库中的类时,不想集成这些类,只想添加一些方法时。

-Category能访问原始类的实例变量,但是不能添加实例变量,如果想添加实例变量,那么就要通过创建继承子类来实现。

-Category实现文件中的实例方法,只要你不去调用它,它就不需要实现所有声明中的所有方法。

block :

代码块存储的数据是一个函数体 ,"^"脱字符,是代码块的语法标记,

代码块中使用局部变量,必须要在局部变量中添加关键字_block;

KVO:基于键值的观察者,主要用于视图交互方面,比如界面的某些数据发生变化了,界面也要跟着变化,KVO实现两个对象的直接同步(model,view)。只有通过键值编码改变的值(KVO),才会调用观察者注册的方法。

NSDictionary:不可变的词典

[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。

example: NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"",@"",nil]; 

[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中.

example:

NSEnumerator *enumeratorKey = [dictionary keyEnumerator];

for (NSObject *object in enumeratorObject) {  

NSLog(@"value:%@", object);  

}


[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值

NSMutableDictionary:可变词典。

NSMutableDictionary 是NSDictionay的子类,所以继承了NSDictionay的方法。

[dictionary setObject: forKey:] :向可变的词典动态的添加数据 。

[dictionary removeAllObjects..] : 删除掉词典中的所有数据。

[dictionary removeObjectForKey..] :删除掉词典中指定key的数据。

NSArray:不可变的数组

[array count] : 数组的长度

[array objectAtIndex 0]: 传入数组脚标的id 得到数据对象。

NSArray *array = [NSArray arrayWithObjects:@"",@"",nil]; 创建数组对象并初始化赋值。

NSMutaleArray:可变的对象数组

[NSMutableArray arrayWithCapacity:3] :初始化可变数组对象的长度。

[array addObject:] : 向可变数组尾部添加数据对象。

[array addObjectsFromArray:] :向可变数组尾部添加一个数组对象。

 [muArray insertObject:@"" atIndex:]; 向可变数组的指定位置添加对象。

   for (NSObject * object in muArray) { 

   NSLog(@"数组对象:%@", object); 
}

NSRange range = NSMakeRange(0,6); 设置一个范围为 0 到 6 之间。

[array removeObject:obj inRange:range] : 设置在一个范围内删除数据,如果这个范围内没有删除的这个对象则不会删除任何东西。例子中因为obj对象在 数组 0 到 6的范围内,所以obj就被删除掉了。

[muArray replaceObjectAtIndex: withObject:@""]; 替换某索引值对应的对象。

isKindeOfClass,isMemberOfClass,id 动态数据类型:

对象在运行时获取其类型的能力,成为内省,内省有很多种方法实现:

判断对象类型:

-(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例。

-(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例,和父类没有关系。

 id类型可以指向任何类的实例,不需要强转。
example:
TestCourse *course = [[TestCourse alloc] init]; 
id t = course;
 
NSString:字符串比较方法
isEqualTostring
[string1 compare:string2]; 
NSArray *array = [nstring componentsSeparatedByString:@","]; 按照指定的字符分割字符串。
使用标准的c创建字符串
char *Cstring = "字符串";  
NSString * string = [[NSString alloc] initWithUTF8String:Cstring]; 

[string1 hasPrefix:@"aaa"]匹配以“aaa”开头的字符串。

[string2 hasSuffix:@"bbb"]匹配以“bbb”结尾的字符串。

[string stringByReplacingCharactersInRange:rang withString:@"大产"];将搜索出来的字符串替换成指定字符串。

[string stringByReplacingOccurrencesOfString :@" " withString:@"*"];  将所有为“ ”的字符串全部替换为“*”

NSInteger integerNumber = 11;  

NSString * string = [NSString stringWithFormat:@"%d",integerNumber];将NSInteger转换成NSString。

NSInteger integer = [string intValue];  将NSString转化成NSInteger.

 

 

posted @ 2013-03-10 19:02  guangliangnet  阅读(156)  评论(0)    收藏  举报