main.m文件
 
#import <Foundation/Foundation.h>
#import "Student.h"
 
字典的初始化
void
    // NSDictionary是不可变的
    NSDictionary *dict = [NSDictionarydictionaryWithObject:@"v"forKey:@"k"];
     
    //最常用的初始化方式
    dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
     
NSArray *objects = [NSArrayarrayWithObjects:@"v1",@"v2", @"v3",nil];
NSArray *keys = [NSArrayarrayWithObjects:@"k1",@"k2", @"k3",nil];
NSDictionarydictionaryWithObjects:objects forKeys:keys];
NSLog(@"%@", dict);
}
 
字典的基本用法
void
    NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
     
    // count是计算有多少个键值对(key-value)
NSLog(@"count=%zi", dict.count);
     
    //由于NSDictionary是不可变的,所以只能取值,而不能修改值
id obj = [dict objectForKey:@"k2"];
NSLog(@"obj=%@", obj);
     
    //将字典写入文件中
    NSString *path =@"/Users/apple/Desktop/dictionary.xml";
    [dict writeToFile:pathatomically:YES];
     
    //从文件中读取内容
    dict = [NSDictionarydictionaryWithContentsOfFile:path];
NSLog(@"dict=%@", dict);
}
 
字典的用法
void
    NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
    //  返回所有的key
NSArray *keys = [dict allKeys];
    //NSLog(@"keys=%@", keys);
     
NSArray *objects = [dict allValues];
    //NSLog(@"objects=%@", objects);
     
    //  根据多个key取出对应的多个value
    //  当key找不到对应的value时,用marker参数值代替
    objects = [dict objectsForKeys:[NSArrayarrayWithObjects:@"k1",@"k2", @"k4",  nil]notFoundMarker:@"not-found"];
NSLog(@"objects=%@", objects);
}
 
遍历字典
void
    NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
    //  遍历字典的所有key
for (id keyin
id value = [dict objectForKey:key];
NSLog(@"%@=%@", key, value);
    }
}
 
遍历字典2
void
    NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
    // key迭代器
NSEnumerator *enumer = [dict keyEnumerator];
id key = nil;
while ( key = [enumer nextObject]) {
id value = [dict objectForKey:key];
NSLog(@"%@=%@", key, value);
    }
     
    //  对象迭代器
    // [dict objectEnumerator];
}
 
遍历字典3
void
    NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
@"v3", @"k3",nil];
    [dict enumerateKeysAndObjectsUsingBlock:
id key,id obj, BOOL
NSLog(@"%@=%@", key, obj);
    }];
}
 
 #pragma mark 
void
Student *stu1 = [StudentstudentWithName:@"stu1"];
Student *stu2 = [StudentstudentWithName:@"stu2"];
Student *stu3 = [StudentstudentWithName:@"stu3"];
     
    //一个对象称为字典的key或者value时,会做一次retain操作,也就是计数器会+1
    NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
@"k1",
@"k2",
@"k3", nil];
     
    //当字典被销毁时,里面的所有key和value都会做一次release操作,也就是计数器会-1
}
 
int main(int argc,const char
{
    @autoreleasepool {
dictMemory();
    }
return 0;
}
 
 
Student.h文件
#import <Foundation/Foundation.h>
 
@interface Student :NSObject
 (nonatomic,retain) NSString *name;
 
+ (id)studentWithName:(NSString
 @end
 
 
Student.m文件
#import "Student.h"
 
 Student
 
+ (id)studentWithName:(NSString
Student *stu = [[Studentalloc] init];
name
return [stu autorelease];
}
 
- (void)dealloc {
NSLog(@"%@被销毁了", _name);
    //  释放name
_namerelease];
superdealloc];
}
 @end