您的位置:首页 > 其它

OC14_OC结业考试错题集

2015-11-12 19:41 232 查看
//

// main.m

// C14_OC结业考试错题集

//

// Created by Rickie on 15/11/12.

// Copyright (c) 2015年 Rickie. All rights reserved.

//

#import <Foundation/Foundation.h>

int main(int argc, const char *
argv[]) {

@autoreleasepool {
/*



1、用哪个关键字定义协议中必须实现的方法:

答案:(D) 选了:A

A、@optional

B、@protected

C、@private

D、不用写关键字







6、下列哪个选项不需要release方法:

答案:(C) 选了:A

A、[[NSString alloc]init];

B、[[NSString alloc] initWithString:@”hehe”];

C、[[NSArray arrayWithArray: arr1];

D、[[NSMutableDictionary alloc] init];







16、NSString *name = [[NSString alloc]initWithString:@"张三"];

NSLog(@"%d",[name retainCount]);

上述代码打印结果是:

答案:(A) 选了:D

A、-1

B、0

C、1

D、2



20、OC中与alloc相反的方法是:

答案:(C) 选了:A

A、release

B、retain

C、dealloc

D、free





22、以下说法不正确的是:

答案:(A) 选了:C

A、nonatomic:提供多线程保护,提高性能,在没有使用多线程的编程中可以选择使用。

B、assign:属性默认值。说明设置器直接进行赋值,针对基础数据类型 (NSInteger,CGFloat)和C数据类型(int,
float, double, char)等等。

C、retain:此属性只用于obj-c的对象类型,对参数进行release旧值,再retain新值。

D、copy:此属性只对实现NSCopying协议的对象有效(NSString)。拷贝工作由copy方法执行。







37、以下对类的描述不正确的是:

答案:(C) 选了:B

A、类的接口部分可以包含实例变量、属性和方法

B、可以把声明和实现都放到.h文件中

C、一对文件(Person.h Person.m)只能定义一个类

D、类比较抽象,对象比较具体





40、下列有效的键路径是:

答案:(B) 选了:C

A、[foo valueForKeyPath:@”1SomeMember”]

B、[foo valueForKeyPath:@”someMember.someAttribute”]

C、[foo valueForKeyPath:@”SOMEMEMBER@someAttibute”]

D、[foo valueForKeyPath:@”some Member”]



43、下面哪个选项对集合的描述是正确的:

答案:(D) 选了:B

A、集合内不能存不同类型的对象

B、集合内可以存整型的数

C、字典内键值可以相同,但是每个键值对应的对象必须不同

D、集合内只能存对象





52、下面哪个选项无内存问题的:

答案:(C) 选了:D

A、

-(NSString *)description{

NSString * str = [[NSString alloc] initWithFormat:@"description"];

return str;

}

B、

-(NSString *)description{

NSString * str = [[NSString alloc] initWithFormat:@"description"];

[str release];

return str;

}

C、

-(NSString *)description{

NSString * str = [[NSString alloc] initWithFormat:@"description"];

[str autorelease];

return str;

}

D、

-(NSString *)description{

NSString * str = [NSString stringWithFormat:@"description"];

return [str autorelease];

}







53、现有Person类声明和Person的子类Student,代码如下:

@interface Person : NSObject

-(void) walk;

@end

@implementation Person

-(void) walk

{

NSLog(@"Person is walking…");

}

@end

@interface Student : Person

-(void) studentWalk;

@end

@implementation Student

-(void) studentWalk

{

(1)

}

end

在下列选项中,那些代码可以填在(1)处实现调用Person类中的walk方法,并输出“Person
is walking…”:

答案:(C) 选了:B

A、walk();

B、super.walk;

C、[self walk];

D、self.walk();







54、@interface Person : NSObject

@property(nonatomic,retain)NSString * name;

@end

上面声明一个Person类

Person * per = [[Person alloc] init];

per.name = [[NSString alloc] initWithFormat:@"张三"];

NSLog(@"per.name = %d",[per.name retainCount]);

答案:(D) 选了:C

A、per.name = -1;

B、per.name = 0;

C、per.name = 1;

D、per.name = 2;





56、下列代码:

@property(nonatomic,assign)id<Painting>myObject;

答案:(C) 选了D

A、是说myObject是Painting分类的一部分

B、是说myObject遵从于Painting分类

C、是说myObject遵从于Painting协议

D、不是合法的Objective-C语法格式





59、对于语句NSString* testObject = [[NSData alloc] init];关于testObject是什么类型对象,以下说法正确的是:

答案:(A) 选了:D

A、编译时,NSString类型,运行时,NSData类型

B、编译与运行时,都是NSData类型

C、编译与运行时,都是NSString类型

D、运行时,NSString类型,编译时,NSData类型





60、读代码:

NSString *str=@"hello";

NSMutableSet *mt=[NSMutableSet setWithObjects:str, nil];

[mt addObject:str];

NSLog(@"%lu",mt.count);

结果是:

答案:(A) 选了:B

A、1

B、2

C、3

D、4





62、声明一个返回值为NSArray,并且带两个字符串对象的BLOCK类型变量:

答案:(D) 选了:C

A、NSArray (*aBlock)(NSString * str,NSString *str2)

B、NSArray ^(*aBlock)(NSString * str,NSString *str2)

C、NSArray (^aBlock)(NSString * str,NSString *str2)

D、NSArray *(^aBlock)(NSString * str,NSString *str2)





64、协议与委托的描述不正确的是:

答案:(C) 选了:A

A、委托是iOS的一种设计模式

B、协议里的方法默认是必须实现的

C、类接受了多个协议,这些协议写在父类后面的<>内,多个协议之间用“、”隔开

D、定义协议使用@protocol关键字







66、下面程序段的输出结果是什么:

NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];

NSString *str = @"3";

int a = 3;

[dic setObject:a forKey:str];

NSLog(@"%@",dic);

答案:(D) 选了A

A、2=1 3=3 4=3

B、1=2 3=3 3=4

C、1=2 3=3 3=3

D、程序崩溃





68、下面程序段的输出结果是什么:

int a = 10;

NSNumber *b = [[NSNumber alloc] initWithInt:a];

NSLog(@"%d", a+++b);

答案:(D) 选了A

A、21

B、20

C、30

D、编译错误





70、读代码

NSString * str =[[NSString alloc]initWithFormat:@"%@",@"iLanou123ios"];

NSString * str1=[str substringToIndex:3];

NSString * str2=[str substringWithRange:NSMakeRange(6, 3)];

NSString * newStr=[str1 stringByAppendingString:str2];

NSLog(@"newStr=%@",newStr);

则newStr的值为:

答案:(D) 选了:A

A、iLanou

B、iL123

C、iLaios

D、iLa123



74、查看下列代码,能正确输出number的选项是:

@interface MyClass : NSObject

{

int number;

}

+(void) printNumber;

@end

@implementation MyClass

+(void) printNumber

{

number =10;

NSLog(@""%d"",number);

}

@end

答案:(D) 选了:A

A、[MyClass printNumber];

B、MyClass * obj = [[MyClass alloc] init]; [obj printNumber];

C、printNumber();

D、编译错误,无法执行。





75、下列选项中不能正常为emp的name属性赋值的代码有:

答案:(B) 选了:C

A、emp.name=@"李嘉诚";

B、emp->name=@"李开复";

C、[emp setValue:@"柳传志" forKey:@"name"];

D、[emp setName:@"黄光裕"];





78、写出下面程序段的输出结果:

NSString * aString = [[NSString alloc] initWithString:@"123"];

[aString autorelease];

NSMutableArray * arr = [NSMutableArray array];

[arr addObject:aString];

NSLog(@"string = %lu",[aString retainCount]);

答案:(C) 选了:A

A、1

B、0

C、整型最大值

D、2





79、下列哪个操作不会引起引用计数(retaincount)的变化是:

答案:(B) 选了:C

A、NSString *str1 = [[NSString stringWithFormat:@"hehe"];

B、int a=1;

C、NSMutableData *data1 = [NSMutableData allocWithZone:data2];

D、NSArray *arr1 = [[NSArray alloc]initWithArray:arr2];



7、在dealloc方法中对变量的释放顺序与初始化的顺序相同。

答案:(F) 选了:正确

正确

错误

10、便利构造器产生的对象应当由使用者进行销毁。

答案:(F) 选了:正确

正确

错误







*/








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