Objective-C2

来源:互联网 发布:华为网络配置实例 编辑:程序博客网 时间:2024/04/28 19:49
self:在-方法里面self是一个当前的本对象,在+方法里面self表示本类。
为什么要设计点语法(在OC之前没有点语法)
为了方便别的程序员转到OC开发上来
为了让程序员设计简单话
隐藏了内存管理细节
隐藏了多线程、同步、加锁细节


使用经典调用和点语法
Dog *dog = [[Dog alloc] init];
[dog setAge:100];
int dogAge = [dog age];
NSLog(@"Dog Age is %d",dogAge);


dog.age = 200;//这不是调用一个变量,而是调用一个函数。
dogAge = dog.age;
NSLog(@"Dog new Age is %d",dogAge);


编译器会把 dog.age = 200;展开成[dog setAge:200];


会把 dogAge = dog.age;展开成 dogAge = [dog age];




字典
NSDictionary *dict = [[NSDictionary alloc] initwithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",nil];
//字典中的元素是以键值对的形式存储的
//@"One" 和 @"1"组成了一个键值对
//@"One"称为值(value) @"1"称为健(key)
//键值对的值和健,都是任意的对象,但是健往往使用字符串
//字典存储对象的地址没有顺序。数组同样可以存储对象,并且有顺序
我们打印一般是  1 = One  2 = Two  3 = Three


数组和字典的区别:数组可以通过顺序找到值,而字典可以通过健可以迅速的找到值。
//NSString *string = [dict objectForKey:@"1"];
找到了健就找到了值。


可变字典
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
//添加键值对
[dic setObject:@"One" forKey:@"1"];
NSLog(@"%@",dict);


//删除键值对
[dic removeObjectForKey:@"1"];
NSLog(@"%@",dic);
[dic release];


NSString 
//使用格式符拼接成一个字符串
NSString * str3 = [[NSString alloc] initWithFormat:@"Hello %d %c",5,'A'];


NSComparisonResult(这是一个枚举) 用于比较字符串的大小
NSString *str1 = @"123";
NSString *str2 = @"456";
NSComparisonResult ret =[str1 comparison str2];
if(ret == NSOrderdAscending){
   NSLog(@"str1 < str2");
}
if(ret == NSOrderdSame){
   NSLog(@"str1 == str2");
}
if(ret == NSOrderdDescending){
   NSLog(@"str1 > str2");
}
//当然用BOOL也是可以比较的
BOOL ret = [str isEqualToString:str2];
NSLog(@"%d",ret);
0 0