OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
2015-12-16 09:59
453 查看
版权声明:本文为CSDN:jiangwei0910410003专栏的专栏
原博主原创文章
注:本文来自http://blog.csdn.net/jiangwei0910410003/article/details/41809719
一、NSArray类
[objc] view
plaincopy
//
// main.m
// 16_NSArray
//
// Created by jiangwei on 14-10-12.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//
#import <Foundation/Foundation.h>
//NSArray中不可以存放基本数据类型,只能存放类的实例,如果需要将基本类型、结构体放入到数组中得话,
//需要通过NSNumber/NSValue进行数据的封装,同时不能在NSArray中存储nil
int main(int argc, const charchar * argv[]) {
@autoreleasepool {
//1.---------------------数组的创建
NSString *s1 = @"zhangsan";
NSString *s2 = @"lisi";
NSString *s3 = @"wangwu";
//最后的nil相当于结束的标记
NSArray *array1 = [[NSArray alloc] initWithObjects:s1,s2,s3, nil nil];
//打印的时候会调用description方法
//相当于:array1.description
NSLog(@"%@",array1);
//使用类方法创建
array1 = [NSArray arrayWithObjects:s1,s2,s3, nil nil];
//创建一个数组,将源数组中的数据拿出来放进去
NSArray *array2 = [NSArray arrayWithArray:array1];
//2.----------------------objectAtIndex
//访问数组中的数据,数组中存放的是对象的指针
NSString *str1 = [array1 objectAtIndex:0];
//3.----------------------count
//获取数组元素中的个数
NSUInteger count = [array1 count];//返回的是一个无符号数值
//4.----------------------containsObject
//判断数组中是否包含某一个对象,判断的是指针对象值,不是对象中的值
BOOL isContains = [array1 containsObject:@"zhangsan"];
//5.----------------------indexOfObject
//返回一个对象在数组中的下标值
NSUInteger index = [array1 indexOfObject:@"zhangsan"];
if(index == NSNotFound){
//没有找到
}else{
//找到了
}
//6.----------------------componentsJoinedByString
//数组中存放的如果是字符串的话,可以使用连接符将其所有的元素进行连接
//注意数组中的元素必须都是字符串
NSString *content = [array1 componentsJoinedByString:@","];
//7.----------------------lastObject
//访问数组最后一个元素
NSString *lastObj = [array1 lastObject];
//8.----------------------arrayByAddingObject
//在原来的数组后面追加元素,返回一个新的数组对象,因为他是不可变的
NSArray *array3 = [array1 arrayByAddingObject:@"zhaoliu"];
//数组的遍历
for(int i=0;i<array1.count;i++){
NSString *str = [array1 objectAtIndex:i];
NSLog(@"%@",str);
}
//快速遍历
for(NSString *s in array1){
NSLog(@"%@",s);
}
//xcode4.4以后,编译器对数组的创建和访问语法做了优化
NSArray *array7 = @[s1,s2,s3];
NSString *s = array7[0];
}
return 0;
}
下面来看一下他的操作方法:
1、NSArray的创建
[objc] view
plaincopy
//1.---------------------数组的创建
NSString *s1 = @"zhangsan";
NSString *s2 = @"lisi";
NSString *s3 = @"wangwu";
//最后的nil相当于结束的标记
NSArray *array1 = [[NSArray alloc] initWithObjects:s1,s2,s3, nil nil];
//打印的时候会调用description方法
//相当于:array1.description
NSLog(@"%@",array1);
我们看到他的initWithObjects方法的最后一个值为nil,这个我们在之前说到过这个值,他是空指针的意思,和Java中的null一样的,这里为什么在创建NSArray的时候最后一个值为空呢?这个和C语言中的场景是类似的,C语言中字符串的结束符为'/0',那么这里的NSArray的最后一个元素为nil,原因是标记NSArray结束了。
然后我们调用NSLog方法打印NSArray对象,结果:
我们看到了,会打印出非常格式化的数据出来,这个原因是因为NSLog打印对象的时候会调用其description方法,和Java中的toString方法一样,当然我们可以重写这个方法的,后面会说到。
我们还可以使用类方法创建NSArray:
[java] view
plaincopy
//使用类方法创建
array1 = [NSArray arrayWithObjects:s1,s2,s3, nil];
//创建一个数组,将源数组中的数据拿出来放进去
NSArray *array2 = [NSArray arrayWithArray:array1];
2、使用下标访问元素
[objc] view
plaincopy
//2.----------------------objectAtIndex
//访问数组中的数据,数组中存放的是对象的指针
NSString *str1 = [array1 objectAtIndex:0];
3、获取数组的大小
[objc] view
plaincopy
//3.----------------------count
//获取数组元素中的个数
NSUInteger count = [array1 count];//返回的是一个无符号数值
NSUInteger是无符号的int类型
4、是否包含某一个元素
[objc] view
plaincopy
//4.----------------------containsObject
//判断数组中是否包含某一个对象,判断的是指针对象值,不是对象中的值
BOOL isContains = [array1 containsObject:@"zhangsan"];
5、找到一个元素在数组中的下标
[java] view
plaincopy
//5.----------------------indexOfObject
//返回一个对象在数组中的下标值
NSUInteger index = [array1 indexOfObject:@"zhangsan"];
if(index == NSNotFound){
//没有找到
}else{
//找到了
}
这里我们看到用到了一个系统常量:NSNotFound,我们可以看到他的定义:
[objc] view
plaincopy
#define NSIntegerMax LONG_MAX
看到了,是一个Long类型的最大值。
6、使用指定的连接符连接数组中所有的元素
[java] view
plaincopy
//6.----------------------componentsJoinedByString
//数组中存放的如果是字符串的话,可以使用连接符将其所有的元素进行连接
//注意数组中的元素必须都是字符串
NSString *content = [array1 componentsJoinedByString:@","];
7、在数组的尾部增加一个元素
[objc] view
plaincopy
//8.----------------------arrayByAddingObject
//在原来的数组后面追加元素,返回一个新的数组对象,因为他是不可变的
NSArray *array3 = [array1 arrayByAddingObject:@"zhaoliu"];
因为NSArray是不可变的,所以会产生一个新的NSArray对象,返回回来
8、数组的遍历
[objc] view
plaincopy
//数组的遍历
for(int i=0;i<array1.count;i++){
NSString *str = [array1 objectAtIndex:i];
NSLog(@"%@",str);
}
//快速遍历
for(NSString *s in array1){
NSLog(@"%@",s);
}
第二种方式和Java中的快速遍历是一样的。
9、Xcode4.4之后新增了NSArray快速创建的一种方式
[objc] view
plaincopy
//xcode4.4以后,编译器对数组的创建和访问语法做了优化
NSArray *array7 = @[s1,s2,s3];
NSString *s = array7[0];
这种方式比之前的创建方式又快又方便,而且符合正常的创建方式,访问的时候也是可以直接用下标进行获取元素
二、NSMutableArray类
NSArray类是不可变的,NSMutableArray类是可变的,可变类一样的特性,就是可以进行增删改查操作
[objc] view
plaincopy
//
// main.m
// 17_NSMutableArray
//
// Created by jiangwei on 14-10-12.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//
#import <Foundation/Foundation.h>
//NSMutableArray继承NSArray类,有NSArray中的所有方法
int main(int argc, const charchar * argv[]) {
@autoreleasepool {
//1.---------------------创建可变数组
NSString *str1 = @"zhangsan";
NSString *str2 = @"lisi";
NSString *str3 = @"wangwu";
NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithObjects:str1,str2,str3, nil nil];
//下面的这种方式创建的数组是错误的
//下面的这种方式是创建不可变数组的方式,不能哟关于可变数组的创建
//NSMutableArray *array1 = @[str1,str2,str3];
//先开辟5个空间,用于存储元素,当存储的元素超过了5个,数组会自动增大空间
NSMutableArray *mArray2 = [[NSMutableArray alloc] initWithCapacity:5];
//使用类方法创建
NSMutableArray *mArray3 = [NSMutableArray arrayWithCapacity:5];
//2.---------------------addObject
//添加元素的方法
[mArray1 addObject:str1];
[mArray1 addObject:str2];
//添加数组,把mArray1中的所有元素全部添加到mArray2中
[mArray2 addObjectsFromArray:mArray1];
NSLog(@"mArray3 = %@",mArray2);
//二维数组
//这个是将mArray1添加到mArray2数组中,这样mArray2就变成了二维数组了
[mArray2 addObject:mArray1];
//3.---------------------insertObject
//在指定的位置上插入特定元素
[mArray2 insertObject:@"def" atIndex:0];
//4.---------------------replaceObjectAdIdex
//替换元素
[mArray2 replaceObjectAtIndex:0 withObject:@"aaa"];
//5.---------------------exchangeObjectAtIndex
//互换两个元素的位置
[mArray2 exchangeObjectAtIndex:0 withObjectAtIndex:3];
//6.---------------------removeObjectAdIndex
//删除指定位置的元素
[mArray2 removeObjectAtIndex:0];
//删除最后一个元素
[mArray2 removeLastObject];
//删除指定的对象
[mArray2 removeObject:@"lisi"];
//删除所有的对象/清空列表
[mArray2 removeAllObjects];
}
return 0;
}
1、创建方法
[objc] view
plaincopy
//1.---------------------创建可变数组
NSString *str1 = @"zhangsan";
NSString *str2 = @"lisi";
NSString *str3 = @"wangwu";
NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithObjects:str1,str2,str3, nil nil];
//下面的这种方式创建的数组是错误的
//下面的这种方式是创建不可变数组的方式,不能用于可变数组的创建
//NSMutableArray *array1 = @[str1,str2,str3];
//先开辟5个空间,用于存储元素,当存储的元素超过了5个,数组会自动增大空间
NSMutableArray *mArray2 = [[NSMutableArray alloc] initWithCapacity:5];
//使用类方法创建
NSMutableArray *mArray3 = [NSMutableArray arrayWithCapacity:5];
创建方式和NSArray类似,但是有一种方式不能用,就是直接创建的方式,那个只能用于创建不变数组。
但是可变数组还有一个方法就是能够事先的设置数组的大小,而且超过这个大小之后,数组会自动扩充,类似于C语言中的动态数组的实现。
2、添加元素
[objc] view
plaincopy
//2.---------------------addObject
//添加元素的方法
[mArray1 addObject:str1];
[mArray1 addObject:str2];
//添加数组,把mArray1中的所有元素全部添加到mArray2中
[mArray2 addObjectsFromArray:mArray1];
NSLog(@"mArray3 = %@",mArray2);
//二维数组
//这个是将mArray1添加到mArray2数组中,这样mArray2就变成了二维数组了
[mArray2 addObject:mArray1];
NSLog(@"mArray3 = %@",mArray2);
使用addObjectsFromArray方法是将一个数组中的每个元素添加到指定的数组中
使用addObject方法是讲一个数组整个都添加到指定的数组中了,那么这个数组就变成二维数组了
这个两个方法要区分一下~~
下面是运行结果:
3、在数组的指定位置上插入元素
[java] view
plaincopy
//3.---------------------insertObject
//在指定的位置上插入特定元素
[mArray2 insertObject:@"def" atIndex:0];
4、替换元素
[java] view
plaincopy
//4.---------------------replaceObjectAdIdex
//替换元素
[mArray2 replaceObjectAtIndex:0 withObject:@"aaa"];
5、互换两个元素的位置
[objc] view
plaincopy
//5.---------------------exchangeObjectAtIndex
//互换两个元素的位置
[mArray2 exchangeObjectAtIndex:0 withObjectAtIndex:3];
6、删除方法
[objc] view
plaincopy
//6.---------------------removeObjectAdIndex
//删除指定位置的元素
[mArray2 removeObjectAtIndex:0];
//删除最后一个元素
[mArray2 removeLastObject];
//删除指定的对象
[mArray2 removeObject:@"lisi"];
//删除所有的对象/清空列表
[mArray2 removeAllObjects];
总结
这篇文章就介绍了Foundation框架中的NSArray类和NSMutableArray类,他们是用来存放一些指定类型的元素的
注:OC中没有泛型的概念,所以对于数组中存放了不同类型的值,在运行的时候会报错的,这个和Java相比,操作集合类的时候安全性就差了点。所以我们在操作集合类的时候需要注意的地方。
原博主原创文章
注:本文来自http://blog.csdn.net/jiangwei0910410003/article/details/41809719
一、NSArray类
[objc] view
plaincopy
//
// main.m
// 16_NSArray
//
// Created by jiangwei on 14-10-12.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//
#import <Foundation/Foundation.h>
//NSArray中不可以存放基本数据类型,只能存放类的实例,如果需要将基本类型、结构体放入到数组中得话,
//需要通过NSNumber/NSValue进行数据的封装,同时不能在NSArray中存储nil
int main(int argc, const charchar * argv[]) {
@autoreleasepool {
//1.---------------------数组的创建
NSString *s1 = @"zhangsan";
NSString *s2 = @"lisi";
NSString *s3 = @"wangwu";
//最后的nil相当于结束的标记
NSArray *array1 = [[NSArray alloc] initWithObjects:s1,s2,s3, nil nil];
//打印的时候会调用description方法
//相当于:array1.description
NSLog(@"%@",array1);
//使用类方法创建
array1 = [NSArray arrayWithObjects:s1,s2,s3, nil nil];
//创建一个数组,将源数组中的数据拿出来放进去
NSArray *array2 = [NSArray arrayWithArray:array1];
//2.----------------------objectAtIndex
//访问数组中的数据,数组中存放的是对象的指针
NSString *str1 = [array1 objectAtIndex:0];
//3.----------------------count
//获取数组元素中的个数
NSUInteger count = [array1 count];//返回的是一个无符号数值
//4.----------------------containsObject
//判断数组中是否包含某一个对象,判断的是指针对象值,不是对象中的值
BOOL isContains = [array1 containsObject:@"zhangsan"];
//5.----------------------indexOfObject
//返回一个对象在数组中的下标值
NSUInteger index = [array1 indexOfObject:@"zhangsan"];
if(index == NSNotFound){
//没有找到
}else{
//找到了
}
//6.----------------------componentsJoinedByString
//数组中存放的如果是字符串的话,可以使用连接符将其所有的元素进行连接
//注意数组中的元素必须都是字符串
NSString *content = [array1 componentsJoinedByString:@","];
//7.----------------------lastObject
//访问数组最后一个元素
NSString *lastObj = [array1 lastObject];
//8.----------------------arrayByAddingObject
//在原来的数组后面追加元素,返回一个新的数组对象,因为他是不可变的
NSArray *array3 = [array1 arrayByAddingObject:@"zhaoliu"];
//数组的遍历
for(int i=0;i<array1.count;i++){
NSString *str = [array1 objectAtIndex:i];
NSLog(@"%@",str);
}
//快速遍历
for(NSString *s in array1){
NSLog(@"%@",s);
}
//xcode4.4以后,编译器对数组的创建和访问语法做了优化
NSArray *array7 = @[s1,s2,s3];
NSString *s = array7[0];
}
return 0;
}
下面来看一下他的操作方法:
1、NSArray的创建
[objc] view
plaincopy
//1.---------------------数组的创建
NSString *s1 = @"zhangsan";
NSString *s2 = @"lisi";
NSString *s3 = @"wangwu";
//最后的nil相当于结束的标记
NSArray *array1 = [[NSArray alloc] initWithObjects:s1,s2,s3, nil nil];
//打印的时候会调用description方法
//相当于:array1.description
NSLog(@"%@",array1);
我们看到他的initWithObjects方法的最后一个值为nil,这个我们在之前说到过这个值,他是空指针的意思,和Java中的null一样的,这里为什么在创建NSArray的时候最后一个值为空呢?这个和C语言中的场景是类似的,C语言中字符串的结束符为'/0',那么这里的NSArray的最后一个元素为nil,原因是标记NSArray结束了。
然后我们调用NSLog方法打印NSArray对象,结果:
我们看到了,会打印出非常格式化的数据出来,这个原因是因为NSLog打印对象的时候会调用其description方法,和Java中的toString方法一样,当然我们可以重写这个方法的,后面会说到。
我们还可以使用类方法创建NSArray:
[java] view
plaincopy
//使用类方法创建
array1 = [NSArray arrayWithObjects:s1,s2,s3, nil];
//创建一个数组,将源数组中的数据拿出来放进去
NSArray *array2 = [NSArray arrayWithArray:array1];
2、使用下标访问元素
[objc] view
plaincopy
//2.----------------------objectAtIndex
//访问数组中的数据,数组中存放的是对象的指针
NSString *str1 = [array1 objectAtIndex:0];
3、获取数组的大小
[objc] view
plaincopy
//3.----------------------count
//获取数组元素中的个数
NSUInteger count = [array1 count];//返回的是一个无符号数值
NSUInteger是无符号的int类型
4、是否包含某一个元素
[objc] view
plaincopy
//4.----------------------containsObject
//判断数组中是否包含某一个对象,判断的是指针对象值,不是对象中的值
BOOL isContains = [array1 containsObject:@"zhangsan"];
5、找到一个元素在数组中的下标
[java] view
plaincopy
//5.----------------------indexOfObject
//返回一个对象在数组中的下标值
NSUInteger index = [array1 indexOfObject:@"zhangsan"];
if(index == NSNotFound){
//没有找到
}else{
//找到了
}
这里我们看到用到了一个系统常量:NSNotFound,我们可以看到他的定义:
[objc] view
plaincopy
#define NSIntegerMax LONG_MAX
看到了,是一个Long类型的最大值。
6、使用指定的连接符连接数组中所有的元素
[java] view
plaincopy
//6.----------------------componentsJoinedByString
//数组中存放的如果是字符串的话,可以使用连接符将其所有的元素进行连接
//注意数组中的元素必须都是字符串
NSString *content = [array1 componentsJoinedByString:@","];
7、在数组的尾部增加一个元素
[objc] view
plaincopy
//8.----------------------arrayByAddingObject
//在原来的数组后面追加元素,返回一个新的数组对象,因为他是不可变的
NSArray *array3 = [array1 arrayByAddingObject:@"zhaoliu"];
因为NSArray是不可变的,所以会产生一个新的NSArray对象,返回回来
8、数组的遍历
[objc] view
plaincopy
//数组的遍历
for(int i=0;i<array1.count;i++){
NSString *str = [array1 objectAtIndex:i];
NSLog(@"%@",str);
}
//快速遍历
for(NSString *s in array1){
NSLog(@"%@",s);
}
第二种方式和Java中的快速遍历是一样的。
9、Xcode4.4之后新增了NSArray快速创建的一种方式
[objc] view
plaincopy
//xcode4.4以后,编译器对数组的创建和访问语法做了优化
NSArray *array7 = @[s1,s2,s3];
NSString *s = array7[0];
这种方式比之前的创建方式又快又方便,而且符合正常的创建方式,访问的时候也是可以直接用下标进行获取元素
二、NSMutableArray类
NSArray类是不可变的,NSMutableArray类是可变的,可变类一样的特性,就是可以进行增删改查操作
[objc] view
plaincopy
//
// main.m
// 17_NSMutableArray
//
// Created by jiangwei on 14-10-12.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//
#import <Foundation/Foundation.h>
//NSMutableArray继承NSArray类,有NSArray中的所有方法
int main(int argc, const charchar * argv[]) {
@autoreleasepool {
//1.---------------------创建可变数组
NSString *str1 = @"zhangsan";
NSString *str2 = @"lisi";
NSString *str3 = @"wangwu";
NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithObjects:str1,str2,str3, nil nil];
//下面的这种方式创建的数组是错误的
//下面的这种方式是创建不可变数组的方式,不能哟关于可变数组的创建
//NSMutableArray *array1 = @[str1,str2,str3];
//先开辟5个空间,用于存储元素,当存储的元素超过了5个,数组会自动增大空间
NSMutableArray *mArray2 = [[NSMutableArray alloc] initWithCapacity:5];
//使用类方法创建
NSMutableArray *mArray3 = [NSMutableArray arrayWithCapacity:5];
//2.---------------------addObject
//添加元素的方法
[mArray1 addObject:str1];
[mArray1 addObject:str2];
//添加数组,把mArray1中的所有元素全部添加到mArray2中
[mArray2 addObjectsFromArray:mArray1];
NSLog(@"mArray3 = %@",mArray2);
//二维数组
//这个是将mArray1添加到mArray2数组中,这样mArray2就变成了二维数组了
[mArray2 addObject:mArray1];
//3.---------------------insertObject
//在指定的位置上插入特定元素
[mArray2 insertObject:@"def" atIndex:0];
//4.---------------------replaceObjectAdIdex
//替换元素
[mArray2 replaceObjectAtIndex:0 withObject:@"aaa"];
//5.---------------------exchangeObjectAtIndex
//互换两个元素的位置
[mArray2 exchangeObjectAtIndex:0 withObjectAtIndex:3];
//6.---------------------removeObjectAdIndex
//删除指定位置的元素
[mArray2 removeObjectAtIndex:0];
//删除最后一个元素
[mArray2 removeLastObject];
//删除指定的对象
[mArray2 removeObject:@"lisi"];
//删除所有的对象/清空列表
[mArray2 removeAllObjects];
}
return 0;
}
1、创建方法
[objc] view
plaincopy
//1.---------------------创建可变数组
NSString *str1 = @"zhangsan";
NSString *str2 = @"lisi";
NSString *str3 = @"wangwu";
NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithObjects:str1,str2,str3, nil nil];
//下面的这种方式创建的数组是错误的
//下面的这种方式是创建不可变数组的方式,不能用于可变数组的创建
//NSMutableArray *array1 = @[str1,str2,str3];
//先开辟5个空间,用于存储元素,当存储的元素超过了5个,数组会自动增大空间
NSMutableArray *mArray2 = [[NSMutableArray alloc] initWithCapacity:5];
//使用类方法创建
NSMutableArray *mArray3 = [NSMutableArray arrayWithCapacity:5];
创建方式和NSArray类似,但是有一种方式不能用,就是直接创建的方式,那个只能用于创建不变数组。
但是可变数组还有一个方法就是能够事先的设置数组的大小,而且超过这个大小之后,数组会自动扩充,类似于C语言中的动态数组的实现。
2、添加元素
[objc] view
plaincopy
//2.---------------------addObject
//添加元素的方法
[mArray1 addObject:str1];
[mArray1 addObject:str2];
//添加数组,把mArray1中的所有元素全部添加到mArray2中
[mArray2 addObjectsFromArray:mArray1];
NSLog(@"mArray3 = %@",mArray2);
//二维数组
//这个是将mArray1添加到mArray2数组中,这样mArray2就变成了二维数组了
[mArray2 addObject:mArray1];
NSLog(@"mArray3 = %@",mArray2);
使用addObjectsFromArray方法是将一个数组中的每个元素添加到指定的数组中
使用addObject方法是讲一个数组整个都添加到指定的数组中了,那么这个数组就变成二维数组了
这个两个方法要区分一下~~
下面是运行结果:
3、在数组的指定位置上插入元素
[java] view
plaincopy
//3.---------------------insertObject
//在指定的位置上插入特定元素
[mArray2 insertObject:@"def" atIndex:0];
4、替换元素
[java] view
plaincopy
//4.---------------------replaceObjectAdIdex
//替换元素
[mArray2 replaceObjectAtIndex:0 withObject:@"aaa"];
5、互换两个元素的位置
[objc] view
plaincopy
//5.---------------------exchangeObjectAtIndex
//互换两个元素的位置
[mArray2 exchangeObjectAtIndex:0 withObjectAtIndex:3];
6、删除方法
[objc] view
plaincopy
//6.---------------------removeObjectAdIndex
//删除指定位置的元素
[mArray2 removeObjectAtIndex:0];
//删除最后一个元素
[mArray2 removeLastObject];
//删除指定的对象
[mArray2 removeObject:@"lisi"];
//删除所有的对象/清空列表
[mArray2 removeAllObjects];
总结
这篇文章就介绍了Foundation框架中的NSArray类和NSMutableArray类,他们是用来存放一些指定类型的元素的
注:OC中没有泛型的概念,所以对于数组中存放了不同类型的值,在运行的时候会报错的,这个和Java相比,操作集合类的时候安全性就差了点。所以我们在操作集合类的时候需要注意的地方。
相关文章推荐
- 万年历---java版
- VNCServer 配置
- 使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?
- OC_04_01
- [No000063]Python格式化输出
- UICollectionView详解
- 视频时间戳转换
- MXNet设计和实现简介 a short introduction to mxnet design and implementation
- jQuery插件之ajaxFileUpload
- attrib设置磁盘的隐藏属性
- Kinect手势识别 - Dollar One算法
- Solr配置中文分词器mmseg4j详解
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
- A*寻路算法的探寻与改良(一)
- 关于tableviewHeader盖住cell的问题解决
- DefWindowProc WindowProc TranslateMessage PreTranslateMessage
- JQuery筛选器全系列介绍
- 对《电力电子技术》教材中PWM整流描述的质疑
- [Windows Server 2008] 查看ASP.net详细错误信息
- spring cron定时器表达式