[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第八章 Foudation Kit 介绍

本学习笔记是对《Objective—C 程序设计 第六版》第十五章关于Foundation框架内容的查缺补漏,因此内容看上去不是很完整。

8.1~8.2 略

8.3 一些有用的数据类型

8.31 范围结构体

NSRange:表示字符串里的字符范围或者数组里的元素范围。

typedef struct _NSRange
{
    unsigned int location;
    unsigned int length;
}NSRange;
  • location字段存放该范围的起始位置
  • length字段存放该范围内所含元素的个数
8.32 几何数据类型
  • CGPoint:表示笛卡尔平面中的一个坐标(x,y)
struct CGPoint
{
    float x;
    float y;
};

CGSize:存储长度和宽度

struct CGSize
{
    float width;
    float height;
}

CGRect:矩形数据类型

struct CGRect
{
    CGPoint origin;
    CGSize size;
}

8.4 字符串

8.41 创建字符串
NSString *height;
height = [NSString stringWithFormat:@"Your heihgt is %d feet, %d inches",5,7];
8.42 类方法
  • 工厂方法(factory method):创建新对象的类方法
8.43 关于大小
  • 返回字符串中字符个数:
NSUInteger length = [height length];
8.44 字符串比较
[str1 isEquatlToString: str2];//str1,str2皆为字符串对象
if ( str1 == str2 ) //只判断str1和str2的指针数值
if ([str1 isEqualToString: str2])//判断字符串内容是否相等
8.45 不区分大小写的比较
  • compare:optioins:
    • NSCaseInsensitiveSearch:不区分大小写字符
    • NSLiteralSearch:完全比较,区分大小写字符
    • NSNumericSearcch:比较字符串的字符个数
if([str1 compare: str2 options: NSCaseInsensitiveSearch|NSNumericSearcch] == NSOrderedSame)
8.46 字符串是否包含别的字符
- (BOOL) hasPrefix:(NSString *) aString;//是否有前缀
- (BOOL) hassuffix:(NSString *) aString;//是否有后缀
- (NSRange) rangeOfString:(NSString *) aString;//返回包含location和length的结构体
8.47 可变性
  • NSString是不可变的:一旦被创建,便不能被改变,对它操作后,会生成新的字符串。
  • 可改变字符串:NSMutableString,是NSString的子类。
    • 任何使用NSString的地方,NSMutableString都可以来替代。
    • stringWithFormat:也可以用来创建NSMutableString对象。
NSMutableString *string = [NSMutableString stringWithCapaciry:50];

[string appendString:@"Hello there "];
[string appendFormat:@"person %d", 25];

8.5 集合大家族

8.51 NSArray
  • NSArray 可以放入任意类型的对象
  • 只能存储Objective-C对象;不能存储nil
NSArray *array = [NSArrayWithObjects:@"one",@"two",@"three",nil];
NSArray *array2 = @[@"one",@"two",@"three"];

//包含对象的个数
-(NSUInteger)count; //[array count]

//访问元素
-(id)objectAtIndex:(NSUInteger)Index;//[array objectAtIndex:3]
//array[i]

8.52 可变数组
  • 不能添加任何元素也不能删除任何元素,(数组中包含的对象是可以改变的)

创建可变数组:

NSMutableArrayarray[NSMutableArray arrayWithCapacity:15];

[array addObject: anyObject];
[array removeObjectAtIndex:2];
  • 注意:没有用来创建可变数组对象的字面量语法
8.53 枚举
  • 向数组请求枚举器
NSEnumerator *enumerator = [array objectEnumerator];
while (id thigie = [enumerator nextObject])
{
    NSLog(@"I found %@", thingie);
}

注意:对可变数组进行枚举操作时,不能通过添加或删除对象这类方式来改变数组的容量。

8.54 快速枚举
  • 快速枚举
for (NSString *string in array)
{
    NSLog(@"I found %@",string); //用变量存储每个数值
}
  • 代码块方法
[array enumerateObjectsUsingBlock:^(NSString *string, NSUInteger index, BOOL *stop){
    NSLog(@I found %@, string);
}]
8.55 NSDictionary
  • 字典使用的是键查询的优化方式,可以立即找出要查询的数据。
  • 创建新的NSDictionary的时候,就要提供该字典所存储的全部对象和关键字。

8.6 其他数值

8.61 NSNumber
  • NSNumber 类来封装基本数据类型
  • 装箱(boxing):将基本类型数据封装成对象的过程
  • 开箱(unboxing):从对象中提取基本类型的数据
8.62 NSValue
  • NSNumber是NSValue的子类,NSValue可以封装任意值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值