原创,若要转载,请尊重作者;转至:http://blog.youkuaiyun.com/kirito_j/article/details/53040779点击打开链接
1. 稳固的Foundation
两类UI的基础,这框架有100多个类,以框架CoreFoundation为基础创建的.
2. 项目样本代码
所有代码写在@autoreleasepool中
3. 一些有用的数据类型(结构体)
3.1 范围(NSRange)
创建方法:
1:NSRange range; range.location=17,range.length=4;
2:NSRange range = {17,4};
3:使用快捷函数NSMakeRange , NSRange range = MSMakeRange(17,4);
3.2 几种数据类型(Core Graphics框架提供)
笛卡尔平面坐标struct CGPoint{ float x; float y;};
长度和宽度struct CGSize{ float width; float height;};
矩形struct CGRect{CGPoint origin; CGSize size;};
创建可有快捷函数创建: CGPointMake() , CGSizeMake() , CGRectMake();
4.字符串
4.1 创建字符串
通过格式字符串和参数创建NSString;
NSString *string = [NSString stringWithFormat:@“I Found %d”, 5)];
4.2 类方法
“-”(减号)做前缀将会在制定的对象实例中有用
“+”(加号)能访问全局数据,为类方法
4.3串大小
NSUInteger length = [string length];
4.4字符串比较
返回YES或NO,原型- (BOOL) isEqualToString: (NSString *) aString;
例如:[string1 isEqualToString: string2];
返回枚举型-1(升序),0(相等),1(降序)
- (NSComparisonResult) compare: (NSString *) aString;
4.5 不区分大小写的比较
-(NSComparisonResult) compare: (NSString *) aString options: (NSStringCompareOptions) mask;
mask选择如下,可用“|”号分开选择多个
NSCaseInsensitiveSearch: 不区分大小写字符
NSLiteralSearch: 区分大小写字符
NSNumericSearch: 比较字符个数,100排在99前面
4.6 字符串内是否包含别的字符串
是否以该字符串开头: - (BOOL) hasPrefix: (NSString *) aString;
是否以该字符串结尾:- (BOOL) hasSuffix: (NSString *) aString;
是否包含该字符串: - (NSRange) rangeOfString: (NSString *) aString;
4.7可变数组
NSString不可变,NSString的子类NSMutableString可变;
创建:
+ (id) stringWithCapacity: (NSUInteger) capacity;(建议容量,加快速度)
NSMutableString *string = [NSMutableString stringWithCapacity:42];
字符串尾附加字符串
- (void) appendString: (NSString *) aString;
格式化和参数添加: - (void) appendFormat:(NSString *) format,…;
删除字符串中的字符
- (void) deleteCharactersInRange: (NSRange) aRange;(经常与rangeOfString搭配使用)
5.集合大家族
5.1 NSArray
只能存对象
创建:
1:要以nil结尾结束 NSArray *array = [NSArray arrayWithObjects:@“one”, @“two”, @“three”, nil];
2:NSArray *array = @[@“one”, @“two”, @“three”];
获取包含对象的个数
- (NSUInteger) count;
获取特定索引
1:- (id) objectAtIndex:(NSUInteger)index;
2: id *myObject = array[1];
切分数组
NSArray *cut = [string componentsSeparatedByString: @“:”];
合并数组
string = [cut componentsJoinedByString: @“|”];
5.2 可变数组
创建:
+ (id) arrayWithCapacity: (NSUInteger) numItems;
末尾添加对象
- (void) addObject: (id) anObject;
删除特定索引处对象
- (void) removeObjectAtIndex: (NSUInteger) index;
5.3 枚举
ESEnumerator *enumerator = [array objectEnumerator];
while(id thingie = [enumerator nextObject]){}
快速枚举
Mac OS X 10.5能用 for(NSString *string in array) {}
都适用-(void)enumerateObjectsUsingBlock:(void(^)(id obj, NSUInteger idx, BOOL *stop))block
[array enumerateObjectsUsingBlock:^(NSString *string, NSUInteger index, BOOL *stop){NSLog(@“%@”,string)}];
5.5 NSDictionary
查询速度快
+(id) dictionaryWithObjectsAndKeys: (id) firstObject,…;
例如:NSDictionary *s = [NSDictionary dictionaryWithObjectsAndKeys: s1,@“string1”,s2,@“string2”,nil];
例如:NSDictionary *s = @{@“string1”:s1,@“string2”:s2};
访问字典中的数值
- (id) objectForKey: (id) aKey; 或者:s[key];
即是NSString *ss = [s objectForKey:@“string1”];
NSString *ss = s[@“string1”];
可变字典 NSMutableDictionary
创建
+ (id) dictionaryWithCapacity: (NSUInteger) numItems;
添加元素
- (void)setObject: (id)anObject forKey:(id)aKey;
删除关键字
- (void)removeObjectForkey: (id) aKey;
6.其他数值
6.1 NSNumber
创建对象
+ (NSNumber *) numberWithChar: (char) value;
+ (NSNumber *) numberWithInt: (int) value;
+ (NSNumber *) numberWithFloat: (float) value;
+ (NSNumber *) numberWithBool: (Bool) value;
例如:
NSNumber *number;
number = @‘X’;//字符型
number = @123;//整型
number = @123ul;//无符号长整型
number = @123ll;//long long
number = @123.45f;//浮点型
number = @123.45;//双浮点型
number = @YES;//布尔型
获得实例值
- (char) charValue;
- (int) intValue;
- (float) floatValue;
- (BOOL) boolValue;
- (NSString *)stringValue;
6.2 NSValue
NSValue是NSNumber的父类,可将结构体放进 NSArray或NSDictionary中
+ (NSValue *) valueWithBytes: (const void *) value objCType: (const char *) type;
例如:
NSRect rect = NSMakeRect(1,2,3,4);
NSValue *value = [NSValue valueWithBytes:&rect objCType:@encode(NSRect)];
[array addObject:value];
使用getValue:提取数值
- (void) getValue:(void *)buffer;
value = [array objectAtIndex: 0];[value getValue: &rect];
Cocoa提供将常用的struct型数据转换成NSValue的便捷方法
+ (NSValue *)valueWithPoint:(NSPoint)aPoint;
+ (NSValue *)valueWithSize:(NSSize)size;
+ (NSValue *)valueWithRect:(NSRect)rect;
- (NSPoint)pointValue;
- (NSSize)sizeValue;
- (NSRect)rectValue;
存取方法
value = [NSValue valueWithRect:rect];
[array addObject: value];
NSRect anotherRect = [value rectValue];
6.3 NSNull
方法
+ (NSNull *) null;