Foundation框架中常用类的介绍(小结2)
来源:互联网 发布:python删除excel数据 编辑:程序博客网 时间:2024/05/18 00:32
NSArray的一个特殊的用法,就是在数组中放置dictionary的时候,数组同样可以用valueForKey的方法来访问dictionary中的value。代码演示如下:
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"sky",nil];
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"2",@"zhiwei",nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"mengtnt",nil];
NSMutableArray *ary = [[NSMutableArray alloc] init];
[ary insertObject:dic1 atIndex:0];
[ary insertObject:dic2 atIndex:0];
[ary insertObject:dic3 atIndex:0];
NSString *str = [[ary valueForKey:@"1"] objectAtIndex:1];
NSLog(@"%@",str);
在从array中取得dictionary的value的时候,切记要指定index因为数组中的dictionary可能有好多key为1的数据,它会根据index位置获得正确的数据,如果上面的程序这样写NSString *str = [[ary valueForKey:@"1"] objectAtIndex:0];那么str中应该存取的就是mengtnt,而如果objectAtIndex:2 那结果会输出一个Null。默认情况下如果在相应的位置没有这个dictionary的key,编译器会自动给这个位置加一个NSNull的对象,大家可不要搞混了,NSNull也是个对象,也是继承自NSObject,千万不能把它当作nil处理。只不过apple为了在集合类中表示空对象而定义的一个类,因为不可能在集合中随便插入nil对象。这样就可以避免程序随便的进入nil对象,而造成程序异常。
类NSFileHandle,其实它的实现就是调用c语言种文件流的操作。通过取得文件流的指针,然后定位指针的位置从而读取出文件中的内容,同样在文件中写入东西也是同样的道理,下面来看一小短代码。
NSFileHandle *TXTFileHandle;
NSString *szTXTFileTemp = @"111.txt";
TXTFileHandle = [NSFileHandle fileHandleForWritingAtPath:szTXTFileTemp];
//防止该文件不存在,如果不存在,新建该文件并写入空数据。
if(!TXTFileHandle)
{
[@"" writeToFile:szTXTFileTemp atomically:NO encoding:1 error:nil];
TXTFileHandle = [NSFileHandle fileHandleForWritingAtPath:szTXTFileTemp];
}
[TXTFileHandle seekToEndOfFile];
char * conTemp = "mengtnt";
[TXTFileHandle writeData:[NSData dataWithBytes:conTemp length:8];
[TXTFileHandle closeFile];
//下面是读取
TXTFileHandle = [NSFileHandle fileHandleForReadingAtPath:szTXTFileTemp];
NSData *fileData = [TXTFileHandle readDataToEndOfFile];
NSlog(@"%@",[[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]);
[TXTFileHandle closeFile];
以上就是cocoa编程中文件操作的常见用法,下面再看两个类,虽说里面的方法都很简单,但是不注意一些细节还是会出问题的。
NSThread类,开启一个线程的方法在简单不过了,[NSThread detachNewThreadSelector:@selector(StartThreadTest:) toTarget:self withObject:nil];其中selector就是你要调用的线程方法。
- (void)StartThreadTest:(id)idThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//一些UI事件以及其他事件处理
[pool release];
}
为什么线程中要加release pool那。特别是线程中有处理UI事件的时候一定要加上pool,否则你会发现应用程序运行异常的慢,甚至有的时候会crash掉。可能是线程的资源在使用时,很难判断何时使用完毕,所以编译器也就不方便自动释放这些资源,这样就要手动加上pool,使线程运行到此处的时候释放掉某些资源。究其深层的原因,自己也是一知半解。这里仅仅是自己的一些想法,还望那位高手能指点下分析的是否正确。
最后跟大家提以下NSTimer的用法,NSTimer说白了就是一个定时器,就是用来每隔一段时间运行某段代码,
[NSTimer scheduledTimerWithTimeInterval:target:self selector:@selector(DetectSN:) userInfo:nil repeats:YES];
当你相停止timer的时候就调用invalide方法。需要注意的一点是当NSTimer被设置无效的时候,要想使用这个timer对象,必须重新开辟一个NSTimer的对象。
那么关于NSFoundation一些类的用法就先介绍到这里吧,这些都是自己平时整理一些资料,这些类都是比较容易用到,同时也容易出错的类。希望能给大家一些帮助,同时在调试中也提高了自己的能力。以后我就来简单的分享下自己cocoa编程中ApplicationKit框架的一些简单用法,不过我一直在UI设计方面存在先天不足,也希望在介绍ApplicationKit框架,各位老鸟看到我设计的一些UI的时候,能给点建设性的意见,以让自己摆脱这方面的苦恼。
- Foundation框架中常用类的介绍(小结2)
- Foundation框架中常用类的介绍(小结1)
- 五 Foundation框架中常用类的介绍
- 六.Foundation框架中常用类的介绍续
- OC和ios中常用的一些类——Foundation框架的小结(1)
- Foundation框架中常用的类
- 黑马程序员-Foundation框架常用类小结
- Foundation 框架的常用类
- 四 cocoa中Foundation框架的介绍
- cocoa中Foundation框架的介绍
- 17、黑马程序员-Foundation框架中一些常用的类
- Foundation框架中一些常用类
- Foundation框架中NSString,NSMutableString,NSArray,NSMutablieArray,NSDictionary,NSMutableDictionar的常用方法介绍
- OC学习笔记13--Foundation框架中常用的struct介绍及使用
- Foundation框架下的常用类
- Foundation框架的简单介绍
- OC中Foundation框架里常用的结构体和类
- 黑马程序员--IOS学习笔记(Foundation框架中常用的类)
- Foundation框架中常用类的介绍(小结1)
- 20150128 【 ARM 】 交叉编译+系统烧写
- USACO 3.1.1 Agri-Net (agrinet)
- Android中程序与Service交互的方式2
- 在Ubuntu 12.04安装和设置Samba实现网上邻居共享
- Foundation框架中常用类的介绍(小结2)
- Python简介
- Maximum Gap|leetcode题解
- Android中程序与Service交互的方式——总结
- Devexpress DropDownButton 用法
- unity3d Sprite Packer如何用
- 10个重要的Linux ps命令实战
- hdu 1391 Number Steps
- UVA 10534-Wavio Sequence(dp_正序逆序最长上升子序列)