基础框架核心类与方法详解
立即解锁
发布时间: 2025-08-21 01:57:06 阅读量: 4 订阅数: 7 


Objective-C编程精髓与实践指南
# 基础框架核心类与方法详解
在编程开发中,掌握基础框架的各类核心类及其方法是非常重要的。下面将详细介绍一些常用类及其方法的功能和使用场景。
## 1. NSString 相关方法
### 1.1 主要方法列表
| 方法 | 功能 |
| --- | --- |
| `- (NSString *)description;` | 返回字符串的简短描述,通常仅用于调试目的。 |
| `- (NSUInteger)hash;` | 返回一个整数值,可作为哈希值,例如将字符串插入哈希表时使用。 |
| `- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;` | 将字符串内容写入第一个参数指定的 URL。可使用辅助文件在最终复制到目标之前存储数据,使用指定的编码,失败时返回错误对象。 |
| `- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;` | 将当前字符串的内容写入由路径参数确定位置的文件。第二个参数确定写入过程中是否使用辅助文件,第三个参数确定使用的编码,失败时返回错误对象。 |
### 1.2 方法调用示例
```objc
NSString *str = @"Hello, World!";
NSError *error;
BOOL success = [str writeToFile:@"/path/to/file.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (!success) {
NSLog(@"写入文件失败: %@", error.localizedDescription);
}
```
## 2. NSMutableString 类
### 2.1 类概述
`NSMutableString` 是 `NSString` 的子类,允许直接修改其内容。因此,`NSString` 的所有方法对 `NSMutableString` 同样有效,并且可以直接修改字符串内容,而无需为中间结果创建新字符串。该类适用于需要操作给定字符串中存储的值或从两个或多个源收集的数据计算生成字符串的场景。
### 2.2 主要方法列表
| 方法 | 功能 |
| --- | --- |
| `- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;` | 用第二个参数指定的字符串替换指定范围内的所有字符。 |
| `- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;` | 从参数 `loc` 指定的位置开始,将第一个参数指定的字符串内容插入目标字符串。 |
| `- (void)deleteCharactersInRange:(NSRange)range;` | 移除由 `range` 参数位置定义的字符子序列。 |
| `- (void)appendString:(NSString *)aString;` | 使用 `aString` 参数中的字符扩展当前字符串。 |
| `- (void)appendFormat:(NSString *)format, ...;` | 使用提供的格式说明符将字符串追加到当前字符串的末尾,格式类似于 `NSLog` 使用的格式。 |
| `- (void)setString:(NSString *)aString;` | 使用 `aString` 参数重置字符串中存储的字符。 |
| `- (id)initWithCapacity:(NSUInteger)capacity;` | 使用第一个参数指定的容量初始化目标 `NSMutableString` 对象。 |
| `+ (id)stringWithCapacity:(NSUInteger)capacity;` | 类方法,创建并返回一个新字符串,使用给定的容量进行初始化。 |
| `- (NSUInteger)replaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange;` | 通过将 `target` 参数的出现替换为第二个参数定义的替换字符串来更改可变字符串。 |
### 2.3 方法调用示例
```objc
NSMutableString *mutableStr = [[NSMutableString alloc] initWithCapacity:10];
[mutableStr appendString:@"Hello"];
[mutableStr insertString:@" World" atIndex:5];
NSLog(@"%@", mutableStr);
```
### 2.4 操作流程图
```mermaid
graph TD;
A[创建 NSMutableString 对象] --> B[追加字符串];
B --> C[插入字符串];
C --> D[输出结果];
```
## 3. NSValue 类
### 3.1 类概述
`NSValue` 为作为其他数据类型包装器的对象提供了一个抽象接口,是 `NSNumber` 和 `NSData` 等其他重要类的基础。
### 3.2 主要方法列表
| 方法 | 功能 |
| --- | --- |
| `- (void)getValue:(void *)value;` | 将 `NSValue` 中存储的内部值复制到给定的存储区域。 |
| `- (const char *)objCType;` | 返回一个以空字符结尾的字符数组(C 字符串),该数组对 `NSValue` 中存储的数据类型进行编码,此类型描述由 `NSValue` 中的其他方法使用。 |
| `- (id)initWithBytes:(const void *)value objCType:(const char *)type;` | 使用 `value` 参数中传递的数据初始化 `NSValue`,同时将数据类型设置为 `type` 参数。注意,`type` 不应手动生成,而应使用 `@encode` 关键字查找与现有类型对应的字符串。 |
| `+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type;` | 返回一个新的 `NSValue` 对象,其中包含通过地址传递的 `value` 参数中的数据,同时将数据类型设置为 `type` 参数。注意,`type` 不应手动生成,而应使用 `@encode` 关键字查找与现有类型对应的字符串。 |
| `+ (NSValue *)value:(const void *)value withObjCType:(const char *)type;` | 与上述方法类似。 |
| `+ (NSValue *)valueWithNonretainedObject:(id)anObject;` | 使用 `anObject` 作为初始值创建一个新的 `NSValue`,使用此方法的优点是不会保留传递的对象,因此在与其他容器一起使用时可能很有用。 |
| `- (id)nonretainedObjectValue;` | 将包含的数据作为 `id`(内部视为指针)返回。 |
| `+ (NSValue *)valueWithPointer:(const void *)pointer;` | 使用作为参数传递的指针作为内容创建一个新的 `NSValue` 对象,在需要将指针存储在容器中时很有用。 |
| `- (void *)pointerValue;` | 将目标 `NSValue` 对象中包含的数据作为指针返回。 |
| `- (BOOL)isEqualToValue:(NSValue *)value;` | 如果目标对象等于作为参数传递的值,则返回 `YES`,使用存储值的适当类型进行比较。 |
### 3.3 方法调用示例
```objc
CGPoint point = CGPointMake(10, 20);
NSValue *pointValue = [NSValue valueWithBytes:&point objCType:@encode(CGPoint)];
CGPoint retrievedPoint;
[pointValue getValue:&retrievedPoint];
NSLog(@"Retrieved point: (%f, %f)", retrievedPoint.x, retrievedPoint.y);
```
## 4. NSNumber 类
### 4.1 类概述
`NSNumber` 是用于操作原生数字的基本类,其最大的用例是在 Objective - C 集合中存储原生数字数据类型。该类作为数字子类的外壳,为它们提供了一个公共接口,因此只需使用一个数字类。
### 4.2 初始化方法列表
| 方法 | 功能 |
| --- | --- |
| `- (id)initWithChar:(char)value;` | 使用字符初始化 `NSNumber`。 |
| `- (id)initWithUnsignedChar:(unsigned char)value;` | 使用无符号字符初始化 `NSNumber`。 |
| `- (id)initWithShort:(short)value;` | 使用短整型值初始化 `NSNumber`。 |
| `- (id)initWithUnsignedShort:(unsigned short)value;` | 使用无符号短整型值初始化 `NSNumber`。 |
| `- (id)initWithInt:(int)value;` | 使用整型值初始化 `NSNumber`。 |
| `- (id)initWithUnsignedInt:(unsigned int)value;` | 使用无符号整型值初始化 `NSNumber`。 |
| `- (id)initWithLong:(long)value;` | 使用长整型值初始化 `NSNumber`。 |
| `- (id)initWithUnsignedLong:(unsigned long)value;` | 使用无符号长整型值初始化 `NSNumber`。 |
| `- (id)initWithLongLong:(long long)value;` | 使用长长整型值初始化 `NSNumber`。 |
| `- (id)initWithUnsignedLongLong:(unsigned long long)value;` | 使用无符号长长整型值初始化 `NSNumber`。 |
| `- (id)initWithFloat:(float)value;` | 使用浮点型值初始化目标 `NSNumber`。 |
| `- (id)initWithDouble:(double)value;` | 使用双精度浮点型值初始化目标 `NSNumber`。 |
| `- (id)initWithBool:(BOOL)value;` | 使用布尔型值初始化目标 `NSNumber`。 |
| `- (id)initWithInteger:(NSInteger)value ;` | 使用 `NSInteger` 值初始化目标 `NSNumber`。 |
| `- (id)initWithUnsignedInteger:(NSUInteger)value ;` | 使用 `NSUInteger` 值初始化目标 `NSNumber`。 |
| `+ (NSNumber *)numberWithChar:(char)value;` | 返回一个新的 `NSNumber` 对象,并使用字符类型的值进行初始化。 |
| `+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;` | 返回一个新的 `NSNumber` 对象,并使用无符号字符类型的值进行初始化。 |
| `+ (NSNumber *)numberWithShort:(short)value;` | 返回一个新的 `NSNumber` 对象,并使用短整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;` | 返回一个新的 `NSNumber` 对象,并使用无符号短整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithInt:(int)value;` | 返回一个新的 `NSNumber` 对象,并使用整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;` | 返回一个新的 `NSNumber` 对象,并使用无符号整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithLong:(long)value;` | 返回一个新的 `NSNumber` 对象,并使用长整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;` | 返回一个新的 `NSNumber` 对象,并使用无符号长整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithLongLong:(long long)value;` | 返回一个新的 `NSNumber` 对象,并使用长长整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;` | 返回一个新的 `NSNumber` 对象,并使用无符号长长整型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithFloat:(float)value;` | 返回一个新的 `NSNumber` 对象,并使用浮点型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithDouble:(double)value;` | 返回一个新的 `NSNumber` 对象,并使用双精度浮点型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithBool:(BOOL)value;` | 返回一个新的 `NSNumber` 对象,并使用布尔型类型的值进行初始化。 |
| `+ (NSNumber *)numberWithInteger:(NSInteger)value;` | 返回一个新的 `NSNumber` 对象,并使用 `NSInteger` 类型的值进行初始化。 |
| `+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;` | 返回一个新的 `NSNumber` 对象,并使用 `NSUInteger` 类型的值进行初始化。 |
### 4.3 获取值方法列表
| 方法 | 功能 |
| --- | --- |
| `- (char)charValue;` | 返回目标对象中存储的字符值。 |
| `- (unsigned char)unsignedCharValue;` | 返回目标对象中存储的无符号字符值。 |
| `- (short)shortValue;` | 返回目标对象中存储的短整型值。 |
| `- (unsigned short)unsignedShortValue;` | 返回目标对象中存储的无符号短整型值。 |
| `- (int)intValue;` | 返回目标对象中存储的整型值。 |
| `- (unsigned int)unsignedIntValue;` | 返回目标对象中存储的无符号整型值。 |
| `- (long)longValue;` | 返回目标对象中存储的长整型值。 |
| `- (unsigned long)unsignedLongValue;` | 返回目标对象中存储的无符号长整型值。 |
| `- (long long)longLongValue;` | 返回目标对象中存储的长长整型值。 |
| `- (unsigned long long)unsignedLongLongValue;` | 返回目标对象中存储的无符号长长整型值。 |
| `- (float)floatValue;` | 返回目标对象中存储的浮点型值。 |
| `- (double)doubleValue;` | 返回目标对象中存储的双精度浮点型值。 |
| `- (BOOL)boolValue;` | 返回目标对象中存储的布尔型值。 |
| `- (NSInteger)integerVa
0
0
复制全文
相关推荐









