Objective-C笔试题整理

1、不会立刻使引用计数器改变的是:答案:(C)A、release //立即引用计数-1B、alloc//引用计数+1C、autorelease //出了释放池之后才会起作用D、retain//引用计数+1

2、在OC中类的接口声明关键字为:答案:(B)A、@import // 引入头文件B、@interface // 接口声明C、@implemention//实现部分声明D、@protocol//协议

3、NSString *name = [[NSString alloc]initWithString:@"张三"];NSLog(@"%d",[name retainCount]);上述代码打印结果是:答案:(A)A、-1B、0C、1D、2//如果输出时用的是%d,则使用initWithString不管@""中的内容是什么,retainCount都是-1.如果输出时是%lu,则retainCount为整型最大数 .//如果使用的是initWithFormat,@""里边为中文,则retainCount为1,如果@""里边是其他,则retainCount为-1 .//如果使用的是stringWithFormat,内部会自动调用便利构造器中的alloc,打印结果跟编译器有关,有的编译器打印出的结果不准确,但是原理还是不变.

4、下列选项中全部属于对象的是:答案:(C)A、我的白色iPhone4s;Mac MiniB、狗;老虎C、邻居家的猫咪“贝贝”;我的弟弟“张三”D、保时捷;犀利哥//宽泛指向的一定程度上还可以是一个类,因此,只有具体指向某一个对象的时候才能说它是一个对象

5、NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a value" forKey:@"aKey"];NSLog(@"%@",[dict objectForKey:@"aKey"]);[dict release];控制台中打印的最后一条信息会是:答案:(C)A、a valueB、aKey : a valueC、崩溃信息D、a value : aKey// 该程序前两句没有问题,最后一句由于并没有使用alloc开辟,因此不必使用release自行释放.

6、现有如下集合,能准确删除“张三”的代码是:NSMutableDictionary * peoples=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"张三",@"左护法",@"李四",@"右使",@"唐sir",@"老大哥", nil];答案:(A)A、[peoples removeObjectForKey:@"左护法"];B、[peoples removeObject:@"张三"];C、[peoples removeObjectAtIndex:0];D、[peoples removeAllObjects];

7、关于类和对象的概念,下列属于对象的是:答案:(C)A、奥迪A6B、保龄球C、世界冠军刘翔D、西红柿

8、以下说法不正确的是:答案:(A)A、nonatomic:提供多线程保护,提高性能,在没有使用多线程的编程中可以选择使用。B、assign:属性默认值。说明设置器直接进行赋值,针对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char)等等。C、retain:此属性只用于obj-c的对象类型,对参数进行release旧值,再retain新值。D、copy:此属性只对实现NSCopying协议的对象有效(NSString)。拷贝工作由copy方法执行。// (A) nonatomic并不提供多线程保护,atomic才提供

9、NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"2", nil];NSMutableSet *set = [[NSMutableSet alloc]init];for(NSString *str in array){ [set addObject:str];}NSLog(@"%lu",[set count]);[set release];控制台打印的结果是:答案:(A)A、4 //set中不能存放重复的对象B、5C、6D、7

10、经过下列哪种操作后需要使用release方法。答案:(C)A、delegateB、assignC、retain//与release对应D、dealloc // 与alloc对应

11、声明一个方法:提供Student对象数组按照学号升序排列的判断条件:答案:(A)A、-(NSComparisonResult)compareWithNumberForAscendSort:(Student*)otherStudentB、-(NSInteger)compareWithNumberForAscendSort:(Student*)otherStudentC、- (BOOL))compareWithNumberForAscendSort:(Student*)otherStudentD、+(int)compareWithNumberForAscendSort:(Student*)otherStudent

12、下列哪个选项不需要release方法:答案:(C)A、[[NSString alloc]init];B、[[NSString alloc] initWithString:@”hehe”];C、[[NSArray arrayWithArray: arr1];D、[[NSMutableDictionary alloc] init];// 谁污染谁治理原则,只要开辟空间就需要释放

13、OC中,所有类的根类是:答案:(A)A、NSObjectB、NSDateC、NSCodingD、UIView

14、下列哪个选项与@synthesize配合使用:答案:(D)A、@endB、@interfaceC、@implementationD、@property //在较早的编译器中,需要使用@synthesize来让编译器自动生成属性所对应的实例变量的setter\getter方法的实现部分 (现在的编译器只需要声明属性@property就可以了)

15、向Xcode控制台输出一个字符串应该用:答案:(A)A、NSLog()B、Printf()C、NSPrintf()D、scanf()

16、必须实现的协议方法使用:关键字声明.答案:(C)A、@propertyB、@interfaceC、@required // 如果不写,系统默认的就是requiredD、@protocol

17、NSMutableString * str = [[NSMutableString alloc] initWithFormat:@"123"];NSLog(@"str = %p",str);[str appendFormat:@"456"];NSLog(@"str = %p",str);上面代码对字符串str进行拼接后,2次打印的地址是否相同:答案:(A)A、相同 // 可变字符串的操作是在原字符串的基础上操作的,不生成新的字符串,因此拼接是在原字符串后直接拼接,地址不变.B、不同C、随机打印D、有时相同,有时不同

18、Objective-C的代码文件的后缀为:答案:(B)A、.cpp //c++B、.m // OCC、.pl //Perl语言程序的后缀D、.c //c语言

享受每一刻的感觉,欣赏每一处的风景,这就是人生。

Objective-C笔试题整理

相关文章:

你感兴趣的文章:

标签云: