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];
- 字符串切分成数组,数组合并成字符串。
-
NSMutableArray
NSArray
包含的对象个数是不能变化的(包含的对象是可以变化的)。NSMutableArray
是可以变化数目。- 创建:
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;
- 末尾添加
- (void) addObject: (id) anObject;
- 删除特定索引的对象
- (void)removeObjectAtIndex:(NSIndexSet *)index;
- 创建:
-
枚举:对数组进行遍历。
NSEnumerator
- 快速枚举
NSDictionary
同样也有对应的NSMutableDictionary
。
|
|
其他数据类型
NSArray
和NSDictionary
只能存储对象,不能直接存储任何基本类型的数据,如int、float、和struct。
NSNumber
NSValue
NSNull
文章作者 andyron
上次更新 2024-07-16
许可协议 原创文章,如需转载请注明文章作者和出处。谢谢!