黑马程序员——OC语言基本语法知识foundation
1.结构体:NSRange 、NSPoint(CGPoint)、 NSSize(CGSize)、 NSRect(CGRect)
NSRange :表示范围,有两个成员变量:location ,length
例如:@“I love you”求出love的范围
int main()
{
NSRange r1= NsMakeRange{2,4};
return 0;
}
例如:查找出某个字符串在str中的范围
NSString *str = @"I love you";
NSRanger r2 = [str rangeOfString :@"ve"];
NSLog(@"loc =%ld,len=%ld",r2.location,r2.length);
Point, Size, Rect和Range都差不多用法
CGPoint p1 = CGPointMake(20,20);// 表示一个坐标
CGSize s1 = CGSizeMake(200,100);// 表示长宽
CGRect r1 = CGRectMake(0,0,100,122);// 表示方块在坐标的某一块
2.字符串:NSString NSMutableString
NSString :不可变字符串,一旦赋值之后,以后就不能改变该对象的内容了
NSMutableString:可变字符串,以后想增就增,想删就删
例如:
int main()
{
NSMutableString *s1 = [NSMutableString stringWithFormat: @"my age is 10"]'
// 拼接到后面去
[s1 appendString :@"11 12 13"]; // 结果是 my age is 10 11 12 13
// 获取is的范围
NSRange range = [s1 rangeOfString :@"is"];
[s1 deleteCharactersInRange:range];// 删除Range的内容
NSLog(@"s1= %@",s1); // 结果 my age 10 11 12 13
}
3.数组:NSArray NSMutableArray
NSArray :不可变数组
1.快速创建一个NSArray对象
NSArray *array = @[@”jack”,@”rose”,@”jim”];
2.快速访问数组中的元素
NSLog(@”%@”,array[2]);// 编译器遇到这行代码,自动翻译成:NSLog(@”%@”,[array object AtIndex:2]);
3.数组的快速遍历
// id obj 代表着数组中的每一个元素
for(id obj in Array)
{
// 找出obj元素在数组中的位置
NSUInteger i = [array indexOfObject:obj];
NSLog(@"%d-%d",i,obj);
}
4.利用block遍历
// 每遍历到一个元素,就会调用一次block,并且当前元素和索引位置当做参数传给block
[array enumerateObjectsUsingBlock: ^(id obj,NSUInteger idx, BOOL *p)
{
NSLog(@"%ld-%ld",idx,obj);
if(idx == 1)
{
// 停止遍历
*stop = YES;
}
}
];
NSMutableArray:可变数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"jack",@"rose",nil];
// 添加元素
[array addObject:[[Person alloc] init]];
[array addObject:@"jake"];
// 删除所有元素
[array removeAllObjects];
// 删除制定的对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];
/*
注意点:@[@"jack",@"rose"]:只能用于创建不可变数组NSArray
错误写法:
NSMutableArray *array = @[@"jack",@"rose"];
[array addObject :@"jim"];
NSMutableArray 和 addObject 是可变数组 而@[@"jack",@"rose"] 是不可变数组
*/
4.NSSet和NSArray的对比
1.共同点:①都是集合,都能存放多个OC对象
②只能存在OC对象,不能存放非OC对象
③本身不可变,都有一个可变的子类
2.不同点:NSArray 有序 NSSet 无序
5:字典的应用
1.字典:NSDictionary NSMutableDictionary
1.NSDictionary
key——value
索引——内容
里面存储的都是键值对
NSDictionary *dict = @
{
@"name" : @ "jack",
@"address" : @"beijing",
@"qq" : @"123543",nil
}
id obj = [dict objectForkey :@"qq"];
NSLog(@"%@",obj);// 打印结果:123543
id obj = dict[@"qq"];
//返回的键值对的个数
NSLog(@"%ld",obj.count);
2.NSMutableDictionary
int main()
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// 添加键值对
[dict setObject:@"jake" forkey:@"name"];
[dict setObject:@"address" forkey:@"beijing"];
[dict setObject:@"jack" forkey:@"name"];// 相同的key,后面的会覆盖前面的,则现在就2个键值对
// 移除键值对
//[dict removeObjectForkey @"name"];
NSString *str = dict[@"name"];
NSLog(@"%@",str);// 打印结果:rose
}
利用block遍历
[dict enumerateKeysAndObjectsUsingBlock:
^(id key,id obj,BOOL *stop)
{
NSLog(@"%@——%@",key,obj);
}
];