/*
NSRange 范围(location length)
NSPoint\CGPoint 点
NSSize\CGSize ui元素的宽高
NSRect\CGRect
*/
/*
NSString 不可变字符串
->NSMutableString 可变字符串
//NSRange r1 = {2, 4}; // 不用
//NSRange r2 = {.location = 2, .length = 4};// 不用
//NSRange r3 = NSMakeRange(2, 4); // 掌握
NSString *str = @"i love oc";
// 查找某个字符串在str中的范围
// 如果找不到,length=0,location=NSNotFound==-1
NSRange range = [str rangeOfString:@"java"];
NSLog(@"loc = %ld, length=%ld", range.location, range.length);
//下面三个都是集合类
NSArray 有序 不可变数组
->NSMutableArray 可变数组
/*
Person *p = [[Person alloc] init];
NSArray *array = @[p,@"jack"];
/*
for(int i = 0;i<array.count;i++){
NSLog(@"%@",array[i]);
}
//id obj 代表着数组中的每一个元素
//int i = 0;
for(id obj in array){
//找出obj元素在数组中的位置
NSUInteger i = [array indexOfobject:obj]
NSLog(@"%ld - %@", i, obj);
//i++
}
*/
[array enumerateObjectsUsingBlock:
//每遍历到一个元素,就会调用一次block
//并且当前元素和索引位置当做参数传给block
^(id obj, NSUInteger idx,, BOOL *stop){
NSLog(@"%ld - %@", idx, obj);
if(idx == 1){
//停止遍历
*stop = YES;
}
}];
*/
NSSet 无序 不可变
->NSMutableSet 可变
NSMutableSet *s = [NSMutableSet set];
[s addObject:@"adf"];
NSDictionary 字典
->NSMutableDictionary
//字典是无序
//允许value相同,但key不能相同
NSDictionary *d = @{@"name" : @"jack",@"adrress" :@"乐山"};
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"jack" forKey:@"name"];
[dict setObject:@"乐山" forKey:@"adrress"];
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop){
NSLog(@"%@ - %@", key, obj);
}
/*
字典:
key ------> value
索引 ------> 文字内容
里面存储的东西都是键值对
*/
NSNumber
之所以能包装基本数据类型为对象,是因为继承了NSValue
//将各种基本数据类型包装成NSNumber对象
@20;
@10.5;
@YES;
@'A';//NSNumber对象
@"A";//NSString对象
//将age变量包装秤NSNumber对象
int age = 100;
@(age);
NSValue
// 结构体--->OC对象
CGPoint p = CGPointMake(10, 10);
// 将结构体转为Value对象
NSValue *value = [NSValue valueWithPoint:p];
// 将value转为对应的结构体
// [value pointValue];
NSArray *array = @[value ];
NSDate
int main()
{
// 09/10/2011
NSString *time = @"2011/09/10 18:56";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);
return 0;
}
void date2string()
{
NSDate *date = [NSDate date];
// 日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// y 年 M 月 d 日
// m 分 s 秒 H (24)时 h(12)时
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *str = [formatter stringFromDate:date];
NSLog(@"%@", str);
}
NSObject
*/
NSSet 和 NSArray的对比
1)共同点
*都是集合,都能存放多个OC对象
*只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
*本身都是不可变,都有一个可变的子类
2)不同点
*NSArray有顺序,NSSet没有顺序