# NSString
- 如果属性类型是NSString,那么@property用
copy:@property (copy) NSString* str - 字符串初始化默认是
immutable,不可修改,需要使用mutableCopy方法变成mutable - 如果字符串大量修改,用
NSMutableString
- 转化为大写:
uppercaseString - 转化为小写:
lowercaseString - 去掉头尾指定字符串
- 去掉字符串前后的空格
stringByTrimmingCharactersInSet [NSCharacterSet whitespaceCharacterSet] - 去掉字符串前后的小写字母
stringByTrimmingCharactersInSet [NSCharacterSet lowercaseCharacterSet] - 去掉字符串前后的大写字母
stringByTrimmingCharactersInSet [NSCharacterSet uppercaseCharacterSet] - 拼接字符串对象:
stringWithFormat - 计算字符串长度
length - 计算字符串长度
length - 拿到指定下标的字符
characterAtIndex,中文等字符转化回字符串stringWithCharacters - 比较两个字符串是否相等
isEqualToString - 字符串指定下标截取到最后
substringFromIndex - 字符串从开头截取到指定下标:
substringToIndex - 字符串截取区间:
substringWithRange - 字符串替换:
stringByReplacingOccurrencesOfString - 字符串比较
compare - 将c的
char[]转化为oc的NSString:stringWithUTF8String - 将oc的NSString转化为c的
char* - 将字符串内容写入磁盘
writeToFile - 从网络/本地读取字符串
URLWithString - 判断开头是否是某个字符串
hasPrefix - 判断结尾是否是某个字符串
hasSuffix - 从前往后搜索另一串字符串
rangeOfString - 从后往前搜索另一串字符串
rangeOfString options NSBackwardsSearch - 字符串转其他类型型:
intValue/floatValue/doubleValue/boolValue - 去头尾空格:
stringByTrimmingCharactersInSet - 去掉头尾指定字符串
stringByTrimmingCharactersInSet options:NSBackwardsSearch - 字符串拆解成数组:
componentsSeparatedByString
拼接字符串对象:
stringWithFormatint age = 14; NSString* s2 = @"小黄"; NSString* s3 = [NSString stringWithFormat:@"大家好,我叫%@, 我今年%d岁了",s2, age];1
2
3计算字符串长度
lengthNSString* s1 = @"1哈哈"; // s1.length NSUInteger num = [s1 length]; NSLog(@"%lu", num); // 31
2
3
4拿到指定下标的字符
characterAtIndex,中文等字符转化回字符串stringWithCharactersNSString* s = @"ha和额呵hahh"; unichar c = [s characterAtIndex:2]; NSString *charStr = [NSString stringWithCharacters:&c length:1]; NSLog(@"%@", charStr); // 和1
2
3
4比较两个字符串是否相等
isEqualToStringNSString* s1 = @"123456"; NSString* s2 = @"123456"; BOOL isEqual = [s1 isEqualToString:s2]; NSLog(@"%@", isEqual ? @"相同" : @"不同");1
2
3
4字符串指定下标截取到最后
substringFromIndexNSString* s1 = @"呵呵呵 666 hello 666"; NSString* s2 = [s1 substringFromIndex:4]; NSLog(@"%@", s2); // 666 hello 6661
2
3字符串从开头截取到指定下标:
substringToIndexNSString* s1 = @"呵呵呵 666 hello 666"; NSString* s2 = [s1 substringToIndex:3]; NSLog(@"%@", s2); // 呵呵呵1
2
3字符串截取区间:
substringWithRangeNSString* s1 = @"呵呵呵 666 hello 666"; NSString* s2 = [s1 substringWithRange:NSMakeRange(2, 3)]; NSLog(@"%@", s2); // 呵 61
2
3字符串替换:
stringByReplacingOccurrencesOfStringNSString* s1 = @"我爱北京天安门"; NSString* s2 = [s1 stringByReplacingOccurrencesOfString:@"北京天安门" withString:@"广州小蛮腰"]; NSLog(@"%@", s2); // 我爱广州小蛮腰1
2
3字符串比较
compare
可以添加第二个参数作比较配置
NSString* s1 = @"China";
NSString* s2 = @"Japan";
NSComparisonResult result = [s1 compare:s2];
if (result == NSOrderedAscending) {
NSLog(@"%@在前面", s1);
} else if (result == NSOrderedDescending) {
NSLog(@"%@在前面", s2);
} else {
NSLog(@"相同");
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 将c的
char[]转化为oc的NSString:stringWithUTF8Stringchar c1[] = "1234567"; NSString* str1 = [NSString stringWithUTF8String:s0]; NSLog(@"%@", str1);1
2
3 - 将oc的NSString转化为c的
char*NSString* s1 = @"assde"; const char* c = s1.UTF8String; NSLog(@"%s", c);1
2
3 - 将字符串内容写入磁盘
writeToFileNSString *path = @"/Users/dreamarts/Documents/file.txt"; NSString *s = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@", s);1
2
3
4
5 - 从网络/本地读取字符串
URLWithStringNSURL *url = [NSURL URLWithString:@"file:///Users/dreamarts/Documents/file.txt"]; NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@", str);1
2
3
4
5
- 从本地读取格式:
file:///Users/dreamarts/Documents/file.txt - 从网络读取格式:
https://www.baidu.com - 从ftp读取格式:
ftp://www.baidu.com/1.txt
- 判断开头是否是某个字符串
hasPrefixNSString* s1 = @"呵呵呵 666 hello"; BOOL res = [s1 hasPrefix:@"呵呵"];1
2 - 判断结尾是否是某个字符串
hasSuffixNSString* s1 = @"呵呵呵 666 hello"; BOOL res = [s1 hasSuffix:@"hello"];1
2 - 从前往后搜索另一串字符串
rangeOfStringNSString* s1 = @"呵呵呵 666 hello 666"; NSRange res = [s1 rangeOfString:@"666"]; NSLog(@"%lu", res.length); // 匹配的长度 没找到为0 NSLog(@"%lu", res.location); // 出现的下标 没找到为 NSNotFound1
2
3
4 - 从后往前搜索另一串字符串
rangeOfString options NSBackwardsSearchNSString* s1 = @"呵呵呵 666 hello 666"; NSRange res = [s1 rangeOfString:@"666" options:NSBackwardsSearch]; NSLog(@"%lu", res.length); // 3 NSLog(@"%lu", res.location); // 141
2
3
4 - 字符串转其他类型型:
intValue/floatValue/doubleValue/boolValueNSString* s1 = @"12"; int n1 = s1.intValue; NSLog(@"%d", n1); // 121
2
3 - 去头尾空格:
stringByTrimmingCharactersInSetNSString *str1 = @" ss d "; str1 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; NSLog(@"%@", str1); // ss d1
2
3 - 去掉头尾指定字符串
NSString *str1 = @"aaa ss d .xxx"; str1 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@".xxx"]]; NSLog(@"%@", str1); // aaa ss d1
2
3
# NSMutableString
- 继承自
NSString,有所有的NSString的方法, 具备可变性 - 使用场景:大批量字符串拼接的时候(5次以上)
- 创建:
NSMutableString *str = [s1 mutableCopy]; - 创建:
NSMutableString *str = [NSMutableString string]; - 添加:
[str appendString:@"123"]; - 删除:
[str deleteCharactersInRange:NSMakeRange(0, 3)]; - 替换:
[str replaceCharactersInRange:NSMakeRange(0, 3) withString:@"123"]; - 截取:
[str substringWithRange:NSMakeRange(0, 3)]; - 插入:
[str insertString:@"123" atIndex:0]; - 截取:
[str substringFromIndex:0]; - 截取:
[str substringToIndex:3]; - 截取:
[str substringWithRange:NSMakeRange(0, 3)];
- 替换:
[str replaceCharactersInRange:NSMakeRange(0, 3) withString:@"123"];NSMutableString* s1 = [NSMutableString string]; [s1 appendFormat:@"jack"]; [s1 replaceCharactersInRange:NSMakeRange(1, 1) withString:@"e"]; NSLog(@"%@", s1); // jeck1
2
3
4
# NSRange
- 语法:
NSRange range = {0, 3}; - 语法:
NSRange range = {.location = 3, .length = 7}; - 属性:
location、length - 创建:
NSRange range = NSMakeRange(0, 3); - 转化为字符串:
NSStringFromRange(range)
# NSArray
- 特点:
- 只能存储OC对象
- 长度固定,无法新增/删除
- 元素紧密相连,每个元素都有自己的下标
- 元素的类型是
id类型 - 当NSArray存储数据类型不一样的时候,遍历可以用
id类型
- 创建:
NSArray *arr = @[@"jack", @"rose", @"tom"]; - 创建:
NSArray *arr = [NSArray arrayWithObjects:@"jack", @"rose", @"tom", nil];
nil表示数组结束
- 创建:
NSArray *arr = @[@"jack", @"rose", @"tom"]; - 长度:
count - 是否包含:
containsObject - 拿到第一个元素:
firstObject - 拿到最后一个元素:
lastObject - 找到第一个指定元素的下标:
indexOfObject: - 遍历1:
for (int i = 0; i < arr.count; i++) - 遍历2:
for (NSString* str in arr) - 遍历3:
enumerateObjectsUsingBlock - 拼接所有项目:
componentsJoinedByString - 字符串拆解成数组:
componentsSeparatedByString - 排序:
sortedArrayUsingComparator - 本地存储:
writeToFile - 本地读取
arrayWithContentsOfFile
- 创建:
NSArray *arr = @[@"jack", @"rose", @"tom"];NSArray *arr = @[@"jack", @"rose", @"tom"]; NSLog(@"arr = %@", arr); // arr = ( jack, rose, tom ) NSLog(@"%@", arr[0]); // jack NSLog(@"%lu", arr.count);1
2
3
4 - 是否包含:
containsObjectNSArray *arr = @[@"jack", @"rose", @"tom"]; BOOL res = [arr containsObject:@"jack"]; // YES1
2 - 拿到第一个元素:
firstObjectNSArray *arr = @[]; arr.firstObject; // nil1
2 - 找到第一个指定元素的下标:
indexOfObject:NSArray *arr = @[@"jack", @"rose", @"tom"]; NSUInteger i = [arr indexOfObject:@"rose"]; NSLog(@"%lu", i); // 1 NSUInteger i = [arr indexOfObject:@"r"]; // NSNotFound1
2
3
4
5 - 遍历3:
[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx,BOOL *_Nonnull stop) {}];NSArray *arr = @[ @"jack", @"rose", @"tom" ]; [arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL *_Nonnull stop) { NSLog(@"%@", obj); // jack rose tom if (idx == 1) { *stop = YES; // 停止遍历 } }];1
2
3
4
5
6
7
8 - 拼接所有项目:
componentsJoinedByStringNSArray *arr = @[ @"jack", @"rose", @"tom" ]; NSString* s = [arr componentsJoinedByString:@"-"]; NSLog(@"%@", s); // jack-rose-tom1
2
3 - 字符串拆解成数组:
componentsSeparatedByStringNSString* s = @"jack-rose-tom"; NSArray* arr = [s componentsSeparatedByString:@"-"]; // ( jack, rose, tom )1
2 - 排序:
sortedArrayUsingComparatorNSArray *arr = @[@"jack", @"rose", @"tom"]; NSArray *arr = [arr sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { return [obj1 compare:obj2]; }] // 按数字排序 NSString* s1 = @"19 10 9 32 46 63 66 34 446 77 44"; NSArray* a1 = [s1 componentsSeparatedByString:@" "]; NSArray* a2 = [a1 sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { return [obj1 intValue] - [obj2 intValue]; }]; NSLog(@"%@", a2); // 从小到大1
2
3
4
5
6
7
8
9
10
11
12
存储文件类型需要是.plist类型
- 本地存储:
writeToFileNSArray* arr = @[@"jack", @"rose", @"lili"]; [arr writeToFile:@"/Users/dreamarts/Desktop/app.plist" atomically:NO];1
2 - 本地读取
arrayWithContentsOfFileNSArray* arr = [NSArray arrayWithContentsOfFile:@"/Users/dreamarts/Desktop/app.plist"]; if (arr != nil) { NSLog(@"%@", arr); }1
2
3
4
# NSMutableArray
- 特点:继承自
NSArray,有所有的NSArray的方法,具备可变性 - 创建:
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; - 添加:
addObject: - 多个添加:
addObjectsFromArray - 删除:
removeObjectAtIndex: - 替换:
replaceObjectAtIndex:withObject: - 插入:
insertObject: atIndex: - 删除指定范围:
removeObjectsInRange - 删除最后一个元素:
removeLastObject - 删除所有元素:
removeAllObjects
- 添加:
addObject:NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr addObject:@"qiqi"]; NSLog(@"%@", arr); // ( jack, rose, tom, qiqi )1
2
3 - 多个添加:
addObjectsFromArrayNSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr addObjectsFromArray:@[@"xx", @"hh"]]; NSLog(@"%@", arr); // ( jack, rose, tom, xx, hh )1
2
3 - 删除:
removeObjectAtIndex:NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr removeObjectAtIndex:1]; NSLog(@"%@", arr); // ( jack, tom )1
2
3 - 替换:
replaceObjectAtIndex:withObject:NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr replaceObjectAtIndex:1 withObject:@"lili"]; NSLog(@"%@", arr); // ( jack, lili, tom )1
2
3 - 插入:
insertObject: atIndex:NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr insertObject:@"qiqi" atIndex:2]; NSLog(@"%@", arr); // ( jack, rose, qiqi, tom )1
2
3 - 删除指定范围:
removeObjectsInRangeNSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr removeObjectsInRange:NSMakeRange(1, 2)]; NSLog(@"%@", arr); // ( jack )1
2
3 - 删除最后一个元素:
removeLastObjectNSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr removeLastObject]; NSLog(@"%@", arr); // ( jack, rose )1
2
3 - 删除所有元素:
removeAllObjectsNSMutableArray *arr = [NSMutableArray arrayWithObjects:@"jack", @"rose", @"tom", nil]; [arr removeAllObjects]; NSLog(@"%@", arr); // ( jack, rose )1
2
3
# NSNumber
- 包装基本数据类型,作为一个对象,可以存入数组中
- 类型初始化:
@(num) - 类型转化:
intValue、floatValue、doubleValue、boolValue、stringValue
- 类型初始化:
@(num)int num = 20; NSNumber* n = @(num);1
2 - 创建:
NSNumber *num = @(10);NSNumber* num = @12.333; NSArray *arr = @[num]; NSLog(@"%@", arr); // ( "12.333" ) NSLog(@"%.2f", num.floatValue); // 12.331
2
3
4
# NSDictionary
- 创建:
dictionaryWithObjectsAndKeys - 创建:
@{@"name": @"coderHDY", @"age": @18} - 取值:
objectForKey: - 遍历1:
enumerateKeysAndObjectsUsingBlock: - 遍历2:
for in - 键值对数量:
count - 获取所有键:
allKeys - 本地存储:
writeToFile - 本地读取:
dictionaryWithContentsOfFile
- 创建:
dictionaryWithObjectsAndKeysNSDictionary* dir1 = [NSDictionary dictionaryWithObjectsAndKeys:@"coderHDY", @"name", @"18", @"age", nil]; NSDictionary* dir2 = @{@"name": @"coderHDY", @"age": @18}; NSLog(@"%@", dir2);1
2
3 - 取值:
objectForKey:NSDictionary* dir2 = @{@"name": @"coderHDY", @"age": @18}; NSString* age = [dir2 objectForKey:@"age"]; // 181
2 - 遍历1:
enumerateKeysAndObjectsUsingBlock:[dir2 enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { NSLog(@"%@ = %@", key, age); }];1
2
3 - 遍历2:
for inNSDictionary* dir2 = @{@"name": @"coderHDY", @"age": @18, @"222": @"id"}; for (NSString* key in dir2) { NSLog(@"%@ = %@", key, dir2[key]); }1
2
3
4 - 键值对数量:
countNSDictionary* dir2 = @{@"name": @"coderHDY", @"age": @18, @"222": @"id"}; NSUInteger n = dir2.count; // 31
2
本地存储读取的文件类型需要是.plist
- 本地存储:
writeToFileNSString* path = @"/Users/dreamarts/Desktop/app.plist"; NSDictionary* dir = @{@"name": @"coderHDY", @"age":@18}; BOOL res = [dir writeToFile:path atomically:NO]; if (res) { NSLog(@"OK"); }1
2
3
4
5
6 - 本地读取:
dictionaryWithContentsOfFileNSString* path = @"/Users/dreamarts/Desktop/app.plist"; NSDictionary* dir = [NSDictionary dictionaryWithContentsOfFile:path]; if (dir) { NSLog(@"%@", dir); }1
2
3
4
5
# NSMutableDictionary
- 特点:继承自
NSDictionary,有所有的NSDictionary的方法,具备可变性 - 创建:
dictionaryWithDictionary: - 添加:
setObject:forKey: - 删除:
removeObjectForKey: - 删除所有:
removeAllObjects
- 创建:
dictionaryWithDictionary:NSMutableDictionary* dir = [NSMutableDictionary dictionaryWithDictionary:@{@"name": @"coderHDY", @"age":@18}];1 - 添加:
setObject:forKey:NSMutableDictionary* dir = [NSMutableDictionary dictionaryWithDictionary:@{@"name": @"coderHDY", @"age":@18}]; [dir setObject:@"eat" forKey:@"action"];1
2 - 删除:
removeObjectForKey:NSMutableDictionary* dir = [NSMutableDictionary dictionaryWithDictionary:@{@"name": @"coderHDY", @"age":@18}]; [dir removeObjectForKey:@"age"];1
2 - 删除所有:
removeAllObjectsNSMutableDictionary* dir = [NSMutableDictionary dictionaryWithDictionary:@{@"name": @"coderHDY", @"age":@18}]; [dir removeAllObjects];1
2
# NSFileManager
- 创建:
defaultManager - 判断文件夹存在:
fileExistsAtPath: - 判断文件/文件夹是否存在:
fileExistsAtPath:isDirectory: - 判断文件夹是否可以读取:
isReadableFileAtPath: - 判断文件夹是否可以写入:
isWritableFileAtPath: - 判断文件夹是否可以执行:
isExecutableFileAtPath: - 创建文件:
createFileAtPath - 创建文件夹:
createDirectoryAtPath:withIntermediateDirectories:attributes:error: - 删除文件夹:
removeItemAtPath:error: - 删除文件:
removeItemAtPath:error: - 移动文件:
moveItemAtPath:toPath:error: - 拷贝文件:
copyItemAtPath:toPath:error: - 获取文件大小:
attributesOfItemAtPath:error: - 获取文件属性:
attributesOfItemAtPath:error: - 获取文件类型:
typeOfItemAtPath:error: - 获取文件创建时间:
creationDateForItemAtPath:error: - 获取文件修改时间:
modificationDateForItemAtPath:error: - 获取文件访问时间:
accessDateForItemAtPath:error: - 获取文件权限:
posixPermissionsForItemAtPath:error: - 获取文件子目录和子文件:
contentsOfDirectoryAtPath:error: - 获取文件内所有(后代)文件和目录:
subpathsAtPath:
- 创建:
defaultManagerNSFileManager* defaultManage = [NSFileManager defaultManager];1 - 判断文件夹存在:
fileExistsAtPath:NSFileManager* defaultManage = [NSFileManager defaultManager]; NSString* path = @"/Users/dreamarts/Desktop/app.plist"; BOOL res = [defaultManage fileExistsAtPath:path];1
2
3 - 判断文件/文件夹是否存在:
fileExistsAtPath:isDirectory:NSFileManager* defaultManage = [NSFileManager defaultManager]; NSString* path = @"/Users/dreamarts/Desktop/app.plist"; BOOL isDir = NO; BOOL res = [defaultManage fileExistsAtPath:path isDirectory:&isDir]; NSLog(@"exist = %d, isDir = %d", res, isDir); // exist = 1, isDir = 01
2
3
4
5 - 判断文件夹是否可以读取:
isReadableFileAtPath:NSFileManager* defaultManage = [NSFileManager defaultManager]; NSString* path = @"/Users/dreamarts/Desktop/app.plist"; BOOL res = [defaultManage isReadableFileAtPath:path]; NSLog(@"res = %d", res); // 11
2
3
4 - 获取文件子目录和子文件:
contentsOfDirectoryAtPath:error:NSFileManager* defaultManage = [NSFileManager defaultManager]; NSString* path = @"/Users/dreamarts/Desktop"; NSArray* arr = [defaultManage contentsOfDirectoryAtPath:path error:nil]; for (NSString* str in arr) { NSLog(@"%@", str); }1
2
3
4
5
6 - 获取文件内所有文件和目录:
subpathsAtPath:NSFileManager* defaultManage = [NSFileManager defaultManager]; NSString* path = @"/Users/dreamarts/Desktop"; NSArray* arr = [defaultManage subpathsAtPath:path]; for (NSString* str in arr) { NSLog(@"%@", str); // 打印中文路径 }1
2
3
4
5
6 - 创建文件:
createFileAtPathNSString* path = @"/Users/dreamarts/Desktop/1.txt"; NSData* data = [path dataUsingEncoding:NSUTF8StringEncoding]; NSFileManager* defaultManager = [NSFileManager defaultManager]; BOOL res = [defaultManager createFileAtPath:path contents:data attributes:nil];1
2
3
4
withIntermediateDirectories:YES: 深度创建
- 创建文件夹:
createDirectoryAtPath:withIntermediateDirectories:attributes:error:NSString *path = @"/Users/dreamarts/Desktop/AA/BB/CC"; NSFileManager *defaultManager = [NSFileManager defaultManager]; BOOL res = [defaultManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];1
2
3
4
5
6
# NSThread
- NSThread 是一个线程对象,它允许你创建一个线程,并运行代码。
- 沉睡线程(单位:秒):
[NSThread sleepForTimeInterval:10]
# NSPoint
CGPoint是一个结构体,它表示一个二维坐标点。也有同样作用的方法NSPoint,建议使用CGPoint- 创建1:
NSPoint p2 = {20, 30}; - 创建2:
CGPointMake(x, y) - 判断结构体是否相等:
CGPointEqualToPoint(point1, point2) - 获取结构体中的x和y值:
point.x、point.y
- 创建1:
NSPoint p2 = {20, 30};NSPoint p = NSMakePoint(10, 20); NSLog(@"x = %f, y = %f", p.x, p.y);1
2 - 创建2:
CGPointMake(x, y)NSPoint p2 = {20, 30};1
# NSSize
CGSize是一个结构体,它表示一个二维尺寸。也有同样作用的方法NSSize,建议使用CGSize- 创建1:
NSSize s2 = {20, 30}; - 创建2:
CGSizeMake(width, height) - 判断结构体是否相等:
CGSizeEqualToSize(size1, size2) - 获取结构体中的width和height值:
size.width、size.height
- 创建2:
CGSizeMake(width, height)NSSize s1 = NSMakeSize(100, 400); NSLog(@"%f, %f", s1.width, s1.height);1
2
# NSRect
CGRect是一个结构体,它表示一个二维矩形区域。也有同样作用的方法NSRect,建议使用CGRect- 创建1:
NSRect r2 = {20, 30, 40, 50}; - 创建2:
CGRectMake(x, y, width, height) - 判断结构体是否相等:
CGRectEqualToRect(rect1, rect2) - 判断结构体是否包含另一个矩形:
CGRectContainsRect(rect1, rect2) - 获取结构体中的x、y、width和height值:
rect.origin.x、rect.origin.y、rect.size.width、rect.size.height
- 创建1:
NSRect r2 = {20, 30, 40, 50};NSRect r2 = {10, 10, 100, 200};1 - 创建2:
CGRectMake(x, y, width, height)NSRect r1 = NSMakeRect(10, 10, 100, 200);1 - 判断结构体是否包含另一个矩形:
CGRectContainsRect(rect1, rect2)BOOL res = NSContainsRect(r1, r2);1
# NSValue
NSValue是一个对象,它表示一个值。它提供了一种方便的方式来表示各种类型的值,如CGPoint、CGSize、CGRect等。- 创建:
NSValue valueWithCGPoint:、NSValue valueWithCGSize:、NSValue valueWithCGRect: - 获取:
CGPointValue、CGSizeValue、CGRectValue - 判断:
isEqualToValue:
NSRect r1 = NSMakeRect(10, 10, 100, 200);
NSRect r2 = {10, 10, 100, 200};
BOOL res = NSContainsRect(r1, r2);
NSLog(@"%d", res);
NSValue* v1 = [NSValue valueWithRect: r1];
NSValue* v2 = [NSValue valueWithRect: r2];
BOOL res2 = [v1 isEqualToValue: v2];
NSLog(@"%f", v1.rectValue.size.width);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# NSDate
NSDate是一个对象,它表示一个特定的时间点。它提供了一种方便的方式来表示日期和时间,并支持许多常见的操作,如比较、格式化等。- 创建:
[NSDate new] - 格式化输出:
[NSDateFormatter new] - 日期NSString转NSDate:
[format dateFromString:@"2025-04-24"] - 当前时间增加/减少秒数:
dateWithTimeIntervalSinceNow: - 比较两个时间之差:
[date1 timeIntervalSinceDate:date2] - 获取年月日:
NSCalendar
- 格式化输出:
[NSDateFormatter new]NSDate* d1 = [NSDate new]; NSDateFormatter* f1 = [NSDateFormatter new]; [f1 setDateFormat:@"yyyy-MM-dd"]; NSString* str = [f1 stringFromDate:d1]; NSLog(@"%@", str); // 2025-04-241
2
3
4
5 - 日期NSString转NSDate:
[format dateFromString:@"2025-04-24"]NSString* s1 = @"2025-04-24 12:00:00 +0800"; NSDateFormatter* f1 = [NSDateFormatter new]; [f1 setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; NSDate* d2 = [f1 dateFromString:s1]; NSLog(@"%@", d2); // Thu Apr 24 12:00:00 20251
2
3
4
5 - 当前时间增加秒数:
dateWithTimeIntervalSinceNow:NSDate* d3 = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 8]; NSLog(@"%@", d3); // 当前时间+8小时:Thu Apr 24 15:46:42 20251
2 - 比较两个时间之差:
[date1 timeIntervalSinceDate:date2]NSString* str = @""; NSDate* d1 = [NSDate new]; for (int i = 0; i < 50000; i++) { str = [NSString stringWithFormat:@"%@%d", str, i]; } NSDate* d2= [NSDate new]; NSTimeInterval interval = [d2 timeIntervalSinceDate:d1]; NSLog(@"%f", interval); // 1.6559521
2
3
4
5
6
7
8 - 获取年月日:
NSCalendarNSDate* d1 = [NSDate new]; NSCalendar* c1 = [NSCalendar currentCalendar]; NSDateComponents* c2 = [c1 components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:d1]; NSLog(@"%ld-%ld-%ld", c2.year, c2.month, c2.day); // 2025-4-241
2
3
4