//
// main.m
// C14_OC结业考试错题集
//
// Created by Rickie on 15/11/12.
// Copyright (c) 2015年 Rickie. All rights reserved.
//
#import
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
答案:(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;
}