OC基础学习6:Fondation-Kit介绍
macOS -> Cocoa -> Foundation, AppKit
iOS -> Cocoa Touch -> Foundation, UIKit(UIView, UIController)
Foundation框架的基础是CoreFoundation(C语言),如果函数或变量是以CF开头,就是CoreFoundation框架中的。
Foundation中一些有用的数据类型
范围: NSRange
表示相关事务的范围。有三种方式初始化:
- 直接给字段赋值:
-
应用C语言的聚合结构赋值:
NSRange range = {17, 4} -
函数
NSMakeRange():NSRange range3 = NSMakeRange(12, 5);这个方法的好处是可以在任何能够使用函数的地方直接使用:[anObject flarbulateWithRange: NSMakeRange(13, 15)];
几何数据类型
CG前缀,表示Core Graphics框架(C语言),用来进行2D渲染。
CGPoint表示坐标
CGSize表示大小,用来存储长度和宽度
CGRect表示矩形,由坐标和大小复合而成
- 对应创建函数:
CGPointMake(),CGSizeMake(),CGRectMake() - 集合数据类型是C语言结构体而不是类,是考虑性能的原因。
字符串
字符串类: NSString。
- 通过格式字符串和参数创建
NSString:
-
类方法: 以
+为起始符的。 -
字符长度,实例方法
length:- (NSUInteger) length; -
字符串比较
(BOOL)isEqualToString:(NSString *)aString;,表示字符串内容是否相同,返回BooL;==判断字符串的指针是否相同,也就是是否是同一个事务。
- (NSComparisonResult)compare:(NSNumber *)decimalNumber;,逐个比较字符串的每个字符,判断大小。返回一个枚举类型NSComparisonResult,三个枚举值分别表示左小于右,左等于右,左大于右。- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;,根据options的不同值有不同的功能。
-
字符串内是否还包含别的字符串 检测字符串是否以另一个字符开头或结尾:
一个字符串在另一个字符串内的返回:
- (NSRange)rangeOfString:(NSString *)searchString;
- 可变性
NSString是不可变的。也就是一旦被创建,就不能以删除字符或添加字符的方式改变它。NSMutableString是NSString的子类,可以改变。- 可通过类方法
stringWithCapacity:来创建,表示分配一块内存用于存储字符串,+ (NSMutableString *)stringWithCapacity:(NSUInteger)capacity;。NSMutableString *string = [NSMutableString stringWithCapacity:1]; appendString:和appendFormat:添加字符串:
deleteCharactersInRange:删除字符串,经常和rangeOfString:一起使用。
- 可通过类方法
NSMutableString *friends = [NSMutableString stringWithCapacity:50]; [friends appendString:@“James BethLynn Jack Evan”]; NSRange jackRange = [friends rangeOfString:@“Jack”]; jackRange.length++; [friends deleteCharactersInRange:jackRange]; // James BethLynn Evan
### 集合
- `NSArray`
两个限制:只能存储OC对象;不能存储nil。
+ 创建
类方法`arrayWithObjects:`(nil表示结束):
`NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];`
直接字面量:
`NSArray *array2 = @[@"one", @"two", @"three"];`
+ 数组对象个数: `[array count];`
+ 按索引获取对象:
```objc
[array objectAtIndex:1];
array[1];
- 字符串切分成数组,数组合并成字符串。
-
NSMutableArrayNSArray包含的对象个数是不能变化的(包含的对象是可以变化的)。NSMutableArray是可以变化数目。- 创建:
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems; - 末尾添加
- (void) addObject: (id) anObject; - 删除特定索引的对象
- (void)removeObjectAtIndex:(NSIndexSet *)index;
- 创建:
-
枚举:对数组进行遍历。
NSEnumerator
- 快速枚举
NSDictionary同样也有对应的NSMutableDictionary。
|
|
其他数据类型
NSArray和NSDictionary只能存储对象,不能直接存储任何基本类型的数据,如int、float、和struct。
NSNumberNSValueNSNull
文章作者 andyron
上次更新 2024-07-16
许可协议 原创文章,如需转载请注明文章作者和出处。谢谢!