OC考试题目

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,考试题目)