您的位置:首页 > 其它

OC考试题目

2014-08-27 18:33 190 查看
1.OC冒泡
2.数组遍历几种方式
3.int largenumber = 1000000000;
for(int i=0;i<largenumber;i++){
Person * p = [Person person];
[p study];
}
这段代码有什么问题,应该怎么去改?为什么?
4.(1)请完成声明一个返回值是bool类型,并且带两个字符串对象的BLOCK类型变量;
(2)为BLOCK类型变量赋值,是该变量具有判断两个字符串对象是否相等的功能;并使用该BLOCK变量测试两个字符串@“Abc”,@“abc”是否相等
5.简述内存管理的原则

新建一个Bubble类

Bubble.h
#import <Foundation/Foundation.h>
@interface Bubble : NSObject
//冒泡排序
- (void)bubbleArray:(NSMutableArray *)array;
@end
Bubble.m
#import "Bubble.h"
@implementation Bubble
- (void)bubbleArray:(NSMutableArray *)array
{
NSInteger count = [array count];
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if ([[array objectAtIndex:j] compare:[array objectAtIndex:j + 1] options:64] == 1) {
[array exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
}
}
}

}
@end

main.m
#import <Foundation/Foundation.h>
#import "Bubble.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1.OC冒泡排序
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"12",@"34", @"35", @"70", @"85", @"9", nil];
Bubble *arr = [[Bubble alloc] init];
[arr bubbleArray:array];
NSLog(@"%@", array);

//2.数组遍历几种方式
NSArray *array1 = [NSArray arrayWithObjects:@"12",@"34", @"35", @"70", @"85", @"9", nil];
NSLog(@"数组遍历1");
for (NSString *i in array1) {
NSLog(@"%@", i);
}
NSLog(@"数组遍历2");
for (int i = 0; i < [array1 count]; i++) {
NSLog(@"%@", array1);
}

//3.
/*
int largenumber = 1000000000;
for(int i=0;i<largenumber;i++){
Person * p = [Person person];
[p study];
}
这段代码有什么问题,应该怎么去改?为什么?*/
//存在的问题就是每次都进行开辟内存空间,没有释放,导致内存大量浪费
//****************修改后的代码******************//
/*for (int i = 0; i < 10000000; i++) {
@autoreleasepool {
Person * p = [Person person];
[p study];
[p autorelease];
}
}*/

//4.(1)请完成声明一个返回值是bool类型,并且带两个字符串对象的BLOCK类型变量;
//(2)为BLOCK类型变量赋值,是该变量具有判断两个字符串对象是否相等的功能;并使用该BLOCK变量测试两个字符串@“Abc”,@“abc”是否相等
BOOL (^Block)(NSString *str1 , NSString *str2) = ^BOOL(NSString *str1 , NSString *str2){
return [str1 isEqualToString:str2 ];
};
NSLog(@"%d",Block(@"Abc",@"abc"));

//5.简述内存管理的原则
/*1.如果一个对象使用了alloc,[mutable] copy,retain,那么你必须使用相应的release或autonrelease.
2.你拥有你任何你创建的对象
3.你使用了retain就可以获得这个对象的所有权。
4.当你不再使用你创建的对象的时候,你必须把所有权归还回去
5.你不能释放你没有拥有的对象*/

return 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oc 考试题目