Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之一(其它四个是Carbon、POSIX、X11和Java)。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节
Cocoa Touch由苹果公司提供的软件开发api, 用于开发 iPhone\iPod\iPad上的软件。也是苹果公司针对iPhone应用程序快速开发提供的一个类库。此库以一系列框架库的形式存在,支持开发人员使用用户界面元素构建图像化的事件驱动的应用程序
Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之一(其它四个是Carbon、POSIX、X11和Java)。
一个框架是由类、方法、函数和文档组合在一起构成的集合,使得程序的开发更容易
数字类、字符串类还有一些集合类(如数组、字典等),当然还有时间日期类,还可以实现与文件的交互
- AppKit框架中包含的类和方法等可以用于开发交互式的图形应用程序。我们可以利用框架中的相关类或方法对文本框、工具栏、菜单、表等进行操作。
在Mac OS X的开发中Cocoa提供了两个基本框架:Foundation和AppKit,在移动设备的开发中CocoaTouch提供了两个基本的框架:Foundation和UIKit框架
- υ Foundation框架中的类的主要有以下几种:
- λ 数据存储类。像NSData/NSString/NSArray/NSDictionary.NSSet等
- λ 文本和字符串类。像NSCharacterSet/NSString等
- λ 时间日期类。像NSDate/NSTimeZone/NSCalendar等
- λ 应用程序通知类。NSNotification/NSNotificationCenter等
- λ 对象的创建和处理类。如NSAutoreleasePool
- λ 对象的空间分配和持久化。NSPropertyListSerialization/NSCoder等
- λ 操作系统服务类。NSFileManager/NSThread等
URL加载系统类。NSURL等
NSNumber类
/*NSNumber */
NSNumber *intNumber=[NSNumber numberWithInt:100];//把一个整数存储到NSNumber对象中(类方法)
NSLog(@"%@",intNumber);
int myInt=[intNumber intValue];
NSLog(@"%d",myInt);//把存储到NSNumber中的数据取出来
NSNumber *myNumber=[[NSNumber alloc]initWithInt:200];//用实例化方法来存储数据( 实例方法)
NSLog(@"%@",myNumber);
NSLog(@"%d",[intNumber isEqualToNumber:myNumber]);//判断两个数字类对象是否相等
NSLog(@"%ld",[intNumber compare:myNumber]);//比较出两个对象的大小关系(大于:返回NSOrderedDescending,1(枚举值),等于:返回NSOrderedSame,0,小于:NSOrderedAscending,-1);
// NSNumber *num1=[NSNumber numberWithInt:10];
// [num1 initWithInt:20];//error!! 无法重新初始化之前创建好的对象
// num1=[NSNumber numberWithInt:30];//但是可以让num1指向另外一个对象
}
Array类
ObjC中没有模板,所以不能用模板作为容器了,但是可以使用对象(像数组,字典等)作为容器,并且ObjC的容器中只能盛放对象,不能盛放简单类型数据
//用类方法 实例方法 创建一个带初始值的数组
NSArray *arr1=[NSArray arrayWithObjects:@"Hello",@"world",@"beijing",@"tiananmen", nil];
NSArray *arr01=[[NSArray alloc]initWithObjects:@"hi",@"i",@"am",@"a",@"boy",[NSNull null],nil];
//使用containsObject方法很常见,例如:判断某一个元素是否在数组中,但使用时
//需要注意:containsObject内部在比较对象是否相等时采用的是地址比较,即两个不同地址而内容完全相同的对象采取containsObj较结果是No
NSLog(@"iscontain:%hhd",[arr01 containsObject:@"i"]);
//数组个数
NSLog(@"%ld",[arr1 count]);
NSLog(@"%@",arr01);
//访问指定下标的元素
NSLog(@"%@",[arr1 objectAtIndex:0]);
//返回新的array对象
NSArray *arr02= [arr1 arrayByAddingObject:@"gugong"];
NSArray *arr03=[arr01 arrayByAddingObjectsFromArray:arr1];
NSLog(@"%@,%@,%@",arr02,arr03,arr01);
// 查找摸个对象的索引
if([arr1 indexOfObject:@"Hello"]==NSNotFound) {
NSLog(@"没找到");
}
else
NSLog(@"%ld",[arr1 indexOfObject:@"Hello"]);
//根据指定的字符串连接数组元素
NSString *str1=[arr01 componentsJoinedByString:@"oo"];
NSLog(@"%@",str1);
//创建一个指定容量的数组
NSMutableArray *arr2=[NSMutableArray arrayWithCapacity:12];
//添加元素
[arr2 addObject:@"tuesday"];
//查找元素
[arr2 insertObject:@"monday" atIndex:0];
//移除指定下标元素
[arr2 removeObjectAtIndex:0];
//添加数组
[arr2 addObjectsFromArray:arr01];
NSLog(@"addObjectFromArray:%@",arr2);
//指定索引替换对象
[arr2 replaceObjectAtIndex:0 withObject:@"=="];
NSLog(@"repleaseObjectAtIndex:%@",arr2);
/*遍历数组方法1:*/
for (int i=0; i<[arr1 count]; ++i) {
NSLog(@"%@",[arr1 objectAtIndex:i]);
}
/*遍历数组方法2:*/
for(id obj in arr1)
{
NSLog(@"%@",obj);
}
//删除全部对象
[arr2 removeAllObjects];
NSLog(@"removeAllObject:%@",arr2);
/*数组排序*/
[arr1 sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"排序=%@",arr1);