oc排序与c语言排序不同,不需要写实现的方法,只需要调用已经写好的方法
// 数组内元素排序--(选择器)正序输出 NSArray *array1=[NSArray arrayWithObjects:@"zcc",@"qwe",@"ada",@"cbv",nil]; NSArray *sortArray2=[array1 sortedArrayUsingSelector:@selector(compare:)]; for(id str in sortArray2){ NSLog(@"%@",str); }
// 数组内元素排序--(选择器)倒序输出 NSArray *array1=[NSArray arrayWithObjects:@"zcc",@"qwe",@"ada",@"cbv",nil]; NSArray *sortArray3=[array1 sortedArrayUsingSelector:@selector(class)];//倒序输出 for(id str3 in sortArray3){ NSLog(@"%@",str3); }
1 //数组排序-- block (默认是升序,降序就是将obj1和obj2调换位置) 2 NSComparator sort=^(id obj1,id obj2){ //使用id可以传任意对象 3 return [obj1 compare:obj2]; //obj1 obj2进行比较 返回枚举类型值 4 }; 5 NSArray *sortArray1=[array1 sortedArrayUsingComparator:sort]; //调用sort函数,sort函数必须自己写 6 for(id str1 in sortArray1){ 7 NSLog(@"%@",str1); 8 }
id nsobject instancetype的区别
Dog *jingba=[[Dog alloc]init];
也可以写成
NSObject *jingba=[[Dog alloc]init];
父类可以指向子类对象,但是使用方法时必须强转成子类方法
[(Dog *)haShiQi bark];
id nsobject 都是指向任意的对象类型
id 当不确定数组类型时,可以选择用id
nsobject 使用时必须强转,id 不用
instancetype 可以反回和方法所在类相同类型的对象(返回值类型多,但是不能传参)
id 只能返回未知类型的对象 (大多参数使用)