ios的小语法
结构体
NSRange表示一个范围 如:NSRange rg={3,5};3为起始位置,5为长度
NSPoint(CGPoint)表示一个点 如:NSPoint p2=CGPointMake(10, 15);
NSSize(CGSize)表示大小 如:CGSize s2=CGSizeMake(10, 15);
NSRect表示一个矩形 如:NSRect r=NSMakeRect(10, 5, 100, 200);
以上这些都是结构体,可以具体访问当中的参数
日期
NSDate *date1=[NSDate date];//获得当前日期
NSLog(@"%@",date1); //结果:2014-07-16 07:25:28 +0000
//日期格式化
NSDateFormatter *formater1=[[NSDateFormatter alloc]init];
formater1.dateFormat=@"yy-MM-dd";
NSString *datestr1=[formater1 stringFromDate:date1];
NSLog(@"%@",datestr1); //结果:14-07-16
//字符串转化为日期
NSDate *date6=[formater1 dateFromString:@"14-02-14 11:07:16"];
NSLog(@"%@",date6); //结果:2014-02-14 03:07:16 +0000
字符串
不可变字符串 NSString
[@"Hello world!" uppercaseString];//转换为大写
[@"Hello world!" lowercaseString];//转换为小写
[@"Hello world!" capitalizedString];//首字母大写
[@"abcdef" hasPrefix:@"ab"];//起始位置以ab开始 返回yes 反之no
[@"abcdef" hasSuffix:@"ef"];//尾部以ef结束 返回yes 反之no
[@"abcdef" substringFromIndex:3];//从第三个索引开始(包括第三个索引对应的字符)截取到最后一位
[@"abcdef" substringToIndex:3];//从0开始截取到第三个索引(不包括第三个索引对应的字符)
[@"abcdef" substringWithRange:NSMakeRange(2, 3)];//从第三个位置开始,长度为3
NSArray *array1=[str1 componentsSeparatedByString:@"."];//字符串分割
可变字符 NSMutableString
NSMutableString *str1= [[NSMutableString alloc] initWithCapacity:10];
[str1 setString:@"hello"];//设置字符串
[str1 appendString:@",world!"];//追加字符串
[str1 appendFormat:@"我的年龄是%i。dear,I love you.",18];
//替换字符串
NSRange range=[str1 rangeOfString:@"dear"];
[str1 replaceCharactersInRange:range withString:@"Honey"];
[str1 insertString:@"My name is Kenshin." atIndex:12]; //插入字符串
[str1 deleteCharactersInRange:[str1 rangeOfString:@"My name is Kenshin."]];//删除指定范围的字符串
数组
不可变数组 NSArray
NSObject *obj=[[NSObject alloc]init];
NSArray *array1=[NSArray arrayWithObjects:@"abc",obj,@"cde",@"opq",@25, nil];//NSArray是不可变的,所以初始化时必须赋值,并以nil为结尾,个数上nil不算在内
NSLog(@"%zi",array1.count);//数组长度,结果:5
NSLog(@"%i",[array1 containsObject:@"cde"]);//是否包含某个对象,结果:1
NSLog(@"%@",[array1 lastObject]);//最后一个对象,结果:25
NSLog(@"%zi",[array1 indexOfObject:@"abc"]);//对象所在的位置:0
//数组的遍历
//方法1
for(int i=0,len=array1.count;i<len;++i){
NSLog(@"method1:index %i is %@",i,[array1 objectAtIndex:i]);
}
//方法2
for(id obj in array){
NSLog(@"method2:index %zi is %@",[array indexOfObject:obj],obj);
}
//方法3,利用代码块方法
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"method3:index %zi is %@",idx,obj);
if(idx==2){//当idx=2时设置*stop为YES停止遍历
*stop=YES;
}
}];
/方法4,利用迭代器
NSEnumerator *enumerator=[array reverseObjectEnumerator];//获取一个反向迭代器
id obj2=nil;
while (obj2=[enumerator nextObject]) {
NSLog(@"method4:%@",obj2);
}
注意:
NSArray中只能存放对象,不能存放基本数据类型,通常我们可以通过在基本数据类型前加@进行转换;
数组中的元素后面必须加nil以表示数据结束;
可变数组 NSMutableArray
NSMutableArray *array1=[NSMutableArray arrayWithObjects:@"aa",@"bb",@"cc", nil];
[array1 addObject:@"vv"];//添加一个元素
[array1 removeObject:person3];//删除一个元素
[array1 removeLastObject];//删除最后一个元素,
[array1 removeAllObjects];//删除所以元素
注意:
可变数组中的元素后面必须加nil以表示数据结束;
往一个可变数组中添加一个对象,此时这个对象的引用计数器会加1,当这个对象从可变数组中移除其引用计数器减1。同时当整个数组销毁之后会依次调用每个对象的releaes方法。