Cocoa实际上是由许多个不同的框架组成的,其中最常用于桌面端(OS X)应用程序的是Foundation和Application Kit。它包含了所有的用户界面对象和高级类。如果打算开发ios平台上的应用程序,那么需要用到User Interface Kit(UIKit)框架。它包含了IOS应用所需要的所有界面对象。
typedef struct _NSRange
{
unsigned int location;
unsigned int length;
} NSRange;
这个结构体用来表示相关事物的范围,通常是字符串里的字符范围或者数组里的元素范围。location字段存放该范围的其实位置,而length字段则是该范围内所含元素的个数。“Object-c is a cool lanaguage”中,单词cool可以用location为17,length为4的范围来表示。location还可以用NSNotFound这个值来表示没有范围,比如变量没有初始化。
创建新的NSRange有三种方式。
1:NSRange range;
range.location = 17;
range.length = 4;
2:NSRange range = {17, 4};
3:Cocoa提供了一个快键函数NSMakeRange()
NSRange range = NSMakeRange(17, 4);//好处是这个函数可以在任何想用的地方调用它
CGPoint表示的是笛卡尔平面中的一个坐标(x, y)
struct CGPoint
{
float x;
float y;
};
CGSize用来存储长度和宽度
struct CGSize
{
float width;
float height;
};
Cocoa提供了一个矩形数据类型,它由坐标和大小复合而成
struct CGRect
{
CGPoint orign;
CGSize size;
};
Cocoa为以上三种结构提供了快键函数:CGPointMake()、CGSizeMake()和CGRectMake()。
字符串:
+ (id) stringWithFormat: (NSString*) format,….;
height = [NSString stringWithFormat:@“your is %d”, 5];
在声明方法时添加了加号,就是把这个方法定义为类方法(class method)。这个方法属于类对象(而不是类的实例对象),通常用于创建新的实例。称这种用来创建新对象的类方法为工厂方法(factory method)。
stringWithFormat:就是一个工厂方法,它根据你提供的参数创建新对象。
- (NSUInteger) length;//返回字符串中的字符个数
NSUInteger length = [height length];
字符串比较:
- (BOOL) isEqualToString: (NSString*) aString;
isEqualToString:可以用来比较接收方(receiver, 接受消息的对象)和作为参数传递过来的字符串。
- (NSComparisonResult) compare: (NSString*) aString;
要比较两个字符串,可以使用Compare:方法,接收对象传递过来的字符串逐个进行比较,它返回一个NSComparisonResult(也就是一个enum)来显示比较结果。
enum
{
NSOrderedAscending = -1,
NSOrderedSame,
NSOrderedDescending
};
typedef NSInterger NSComparisonResult;
compare:进行的时区分大小写的比较。
方法compare:options:给我们更多选择权
- (NSComparisonResult) compare: (NSString *) aString
options: (NSStringCompareOptions) mask
options参数是一个掩位码,使用位或bitwise-OR运算符(|)来添加选项标记。
NSCaseInsensitiveSearch: 不区分大小写字符
NSLiteralSearch: 进行完全比较,区分大小写字符
NSNumericSearch: 比较字符串的字符个数,而不是字符串值。
if ([things1 compare:things2 options: NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame)
{
NSLog(@“They match!”);
}
- (BOOL) hasPrefix: (NSString*) aString;//检查字符串是否以另一个字符串开头
- (BOOL) hasSuffix: (NSString*) aString //检查字符串是否以另一个字符串结尾
- (NSRange) rangeOfString:(NSString*) aString;//想知道字符串内的某处是否包含其他字符串
NSString是不可变(immutable)的,可以对它执行各种操作,如生成新的字符串、查找、比较,但不能删除字符改变它,Cocoa提供了一个NSString的子类,叫做NSMutableString,如果想改变字符串,请使用这个类。
+ (id) stringWithCapacity: (NSUInteger) capacity;//创建一个新的对象
- (void) deleteCharactersInRange: (NSRange) aRange;方法删除字符串中的字符
NSArray是一个Cocoa类,用来存储对象的有序列表,可以在NSArray中存放任意类型的对象,甚至是其他数组或字典对象。不可以存储C语言的基础类型和NSArray的随机指针,也不能存储nil。
NSArray *array = [NSArray arrayWithObjects:@“one”, @“two”,@“three”,nil];
NSArray *array2 = @[@“one”, @“two”, @“three"];
使用字面量语法时不必再结尾处特意补上nil.
NSEnumerator *enumerator = [array objectEnumerator];
while(id thingie = [enumerator nextObject]){
NSLog (@“I found %@“, thingie);
}