// ※选择题(共80题,每题1分)
// 1、NSString *name = [[NSString alloc]initWithString:@"张三"];
// NSLog(@"%d",[name retainCount]);
// 上述代码打印结果是:
// 答案:(A)
// A、-1
// B、0
// C、1
// D、2
// 2、经过下列哪种操作后需要使用release方法。
// 答案:(C)
// A、delegate
// B、assign
// C、retain
// D、dealloc
// 3、必须实现的协议方法使用:关键字声明.
// 答案:(C)
// A、@property
// B、@interface
// C、@required
// D、@protocol
// 4、关于集合描述不正确的是:
// 答案:(A)
// A、所有的集合都可以添加元素。
// B、集合分为可变集合、不可变集合。
// C、数组、字典、NSSet这三种集合存储数据的方式不同。
// D、所有集合都能保存id类型数据。
// 5、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
// B、5
// C、6
// D、7
// 6、下列说法中错误的是:
// 答案:(C)
// A、Objective-C不用"函数调用",而用互相传递讯息.
// B、Objective-C一个完整的类分为interface和implementation两块
// C、Objective-C对象使用new分配内存,用delete释放
// D、Objective-C协议分为非正式协议和正式协议
// 7、Objective-C中包含一个自定义的头文件应该使用:
// 答案:(C)
// A、#include ""
// B、#include<>
// C、#import ""
// D、#import<>
// 8、用哪个关键字定义协议中必须实现的方法:
// 答案:(D)
// A、@optional
// B、@protected
// C、@private
// D、不用写关键字
// 9、NSMutableString * str = [[NSMutableString alloc] initWithFormat:@"123"];
// NSLog(@"str = %p",str);
// [str appendFormat:@"456"];
// NSLog(@"str = %p",str);
// 上面代码对字符串str进行拼接后,2次打印的地址是否相同:
// 答案:(A)
// A、相同
// B、不同
// C、随机打印
// D、有时相同,有时不同
// 10、以下代码执行后,person对象的retain count是多少:
// Person * person = [[Person alloc] init];
// [person retain]; [person release];
// 答案:(B)
// A、0
// B、1
// C、2
// D、3
// 11、下列哪个选项与@synthesize配合使用:
// 答案:(D)
// A、@end
// B、@interface
// C、@implementation
// D、@property
// 12、OC中布尔(BOOL)类型的变量的值只有:
// 答案:(B)
// A、1/0
// B、YES/NO
// C、true/false
// D、1/-1
// 13、下列哪个选项不需要release方法:
// 答案:(C)
// A、[[NSString alloc]init];
// B、[[NSString alloc] initWithString:@”hehe”];
// C、[[NSArray arrayWithArray: arr1];
// D、[[NSMutableDictionary alloc] init];
// 14、OC中,所有类的根类是:
// 答案:(A)
// A、NSObject
// B、NSDate
// C、NSCoding
// D、UIView
// 15、NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a value" forKey:@"aKey"];
// NSLog(@"%@",[dict objectForKey:@"aKey"]);
// [dict release];
// 控制台中打印的最后一条信息会是:
// 答案:(C)
// A、a value
// B、aKey : a value
// C、崩溃信息
// D、a value : aKey
// 16、下面关于类概念的描述中,错误的是:
// 答案:(D)
// A、类是抽象数据类型的实现
// B、类是具有共同行为的若干对象的统一描述体
// C、类是创建对象的模板
// D、类就是C语言中的结构体类型
// 17、名为print::的方法有几个传入参数:
// 答案:(C)
// A、0
// B、1
// C、2
// D、3
// 18、下面哪些选项是类:
// 答案:(A)
// A、导演
// B、张艺谋
// C、擎天柱
// D、辉哥的雪铁龙
// 19、下列选项中全部属于对象的是:
// 答案:(C)
// A、我的白色iPhone4s;Mac Mini
// B、狗;老虎
// C、邻居家的猫咪“贝贝”;我的弟弟“张三”
// D、保时捷;犀利哥
// 20、不会立刻使引用计数器改变的是:
// 答案:(C)
// A、release
// B、alloc
// C、autorelease
// D、retain
// 21、在OC中类的接口声明关键字为:
// 答案:(B)
// A、@import
// B、@interface
// C、@implemention
// D、@protocol
// 22、下面哪些选项是属性的正确声明方式:
// 答案:(C)
// A、@property(nonatomic,retain)NSString myString;
// B、@property(nonatomic,assign)NSString * myString;
// C、@property(nonatomic,assign)int mynumber;
// D、@property(nonatomic,retain)int mynumber;
// 23、在OC中,类的定义包括两部分(声明与实现),其中实现部分是:
// 答案:(C)
// A、@import
// B、@interface
// C、@implementation
// D、@protocol
// 24、使用 Objective-C语言输出“This is a Objective-C program.”正确的是:
// 答案:(D)
// A、NSLog(@"%s",This is a Objective-C program.);
// B、NSLog(@"%@",This is a Objective-C program.);
// C、NSLog(@"This is a Objective-C program.",%@);
// D、NSLog(@"This is a Objective-C program.");
// 25、OC中与alloc相反的方法是:
// 答案:(C)
// A、release
// B、retain
// C、dealloc
// D、free
// 26、向Xcode控制台输出一个字符串应该用:
// 答案:(A)
// A、NSLog()
// B、Printf()
// C、NSPrintf()
// D、scanf()
// 27、-(id)setName:(NSString *)name :(NSString *)sex age:(int)age的方法名是:
// 答案:(C)
// A、-(id)setName:(NSString *)name :(NSString *)sex age:(int)age
// B、-setName:name :sex age:age
// C、setName: : age:
// D、setName:name:age:
// 28、关于类和对象的概念,下列属于对象的是:
// 答案:(C)
// A、奥迪A6
// B、保龄球
// C、世界冠军刘翔
// D、西红柿
// 29、OC中的委托最好声明成:
// 答案:(B)
// A、retain
// B、assign
// C、copy
// D、readonly
// 30、NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three",nil];
// NSLog(@"%@",[array objectAtIndex:1]);
// NSLog(@"%@",[array objectAtIndex:3]);
// 控制台中打印的最后一条信息会是:
// 答案:(D)
// A、one
// B、two
// C、three
// D、崩溃信息
// 31、下列有效的键路径是:
// 答案:(B)
// A、[foo valueForKeyPath:@”1SomeMember”]
// B、[foo valueForKeyPath:@”someMember.someAttribute”]
// C、[foo valueForKeyPath:@”SOMEMEMBER@someAttibute”]
// D、[foo valueForKeyPath:@”some Member”]
// 32、@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)
// A、per.name = -1;
// B、per.name = 0;
// C、per.name = 1;
// D、per.name = 2;
// 33、关于类目的说法正确的有:
// 答案:(A)
// A、类目可以为所有的类添加新方法。
// B、类目中添加的方法比原类中定义的方法级别要低。
// C、定义类目需要使用关键字category。
// D、类目可以随意使用。
// 34、下面哪个选项对集合的描述是正确的:
// 答案:(D)
// A、集合内不能存不同类型的对象
// B、集合内可以存整型的数
// C、字典内键值可以相同,但是每个键值对应的对象必须不同
// D、集合内只能存对象
// 35、关于NSSet描述正确的有:
// 答案:(B)
// A、NSSet可以存放任何数据类型的数据。
// B、NSSet存放数据是无序的。
// C、NSSet可以通过下标获取数据。
// D、NSSet存放的数据是有序的。
// 36、下列代码:
// @property(nonatomic,assign)id<Painting>myObject;
// 答案:(C)
// A、是说myObject是Painting分类的一部分
// B、是说myObject遵从于Painting分类
// C、是说myObject遵从于Painting协议
// D、不是合法的Objective-C语法格式
// 37、关于协议描述不正确的是:
// 答案:(D)
// A、协议分正式和非正式协议。
// B、在要求确认协议的类必须实现协议中的方法时,可以使用@required。
// C、一个协议可以被多个类确认。
// D、协议中声明的方法,默认是@optional的。
// 38、在OC中扩展类的方法的形式不包括:
// 答案:(B)
// A、继承
// B、多态
// C、类目
// D、延展
// 39、关于类目、延展的描述错误的是:
// 答案:(B)
// A、延展主要为类提供“私有”方法
// B、类目、延展不但能为类添加方法,而且都可以添加新的实例变量
// C、无论能否拿到类的源码,类目都可以对其扩展
// D、类目和延展声明语法不同
// 40、自定义一个Person类,下面哪个选项是规范的便利构造器声明方式:
// 答案:(D)
// A、-(id)personWithName:(NSString *)theName;
// B、-(id)personwithName:(NSString *)theName;
// C、+(id)personwithName:(NSString *)theName;
// D、+(id)personWithName:(NSString *)theName;
// 41、Objective-C语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:
// 答案:(C)
// A、@public
// B、@private
// C、@protected
// D、@friendly
// 42、以下说法正确的是:
// 答案:(C)
// A、求数组的内容的个数用length方法
// B、字典是根据其位置来索引数据的
// C、协议中定义的方法默认是必须实现的
// D、定义类目必须要拿到自己类的源代码
// 43、下面哪个选项无内存问题的:
// 答案:(C)
// 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];
// }
// 44、以下对类的描述不正确的是:
// 答案:(C)
// A、类的接口部分可以包含实例变量、属性和方法
// B、可以把声明和实现都放到.h文件中
// C、一对文件(Person.h Person.m)只能定义一个类
// D、类比较抽象,对象比较具体
// 45、NSString和 NSMutableString的关系和区别描述不正确的是:
// 答案:(D)
// A、NSString是不可变字符串,即本身内容不能被改变。
// B、NSMutableString是可变字符串,即本身内容可修改。
// C、NSMutableString是NSString的子类。
// D、NSString和NSMutableString没有任何关系。
// 46、下面程序段的输出结果是什么:
// NSArray * arr1 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
// NSString *str;
// str = [arr1 objectAtIndex:2];
// NSLog(@"%@",str);
// 答案:(C)
// A、1
// B、2
// C、3
// D、程序崩溃
// 47、关于KVC的描述正确的是:
// 答案:(A)
// A、KVC是指“键-值-编码”。
// B、是一种直接访问对象的属性的机制。
// C、只能访问对象的属性。
// D、当对象的属性值改变时,我们能收到一个通知。
// 48、下面描述正确的选项是:
// 答案:(B)
// A、当计数器为1时,dealloc方法由系统自动调用
// B、一个对象在引用计数变为0时,会调用自己的dealloc方法
// C、在dealloc方法里,应该在[super dealloc]后释放本类所拥有的对象
// D、开启ARC后,可以重载dealloc,必须在dealloc里写 [super dealloc]方法
// 49、简单类型的成员比如:int类型成员在使用@property()时,括号中应使用:
// 答案:(A)
// A、assign
// B、copy
// C、retain
// D、auto
// 50、下列哪个选项不能作为property的可选属性:
// 答案:(A)
// A、alloc
// B、retain
// C、atomic
// D、strong
// 51、NSRange的成员变量有:
// 答案:(A)
// A、location,length
// B、width,height
// C、location,height
// D、length,width
// 52、下面程序段的输出结果是什么:
// NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];
// [dic removeObjectForKey:@"3"];
// NSLog(@"%@",dic);
// 答案:(C)
// A、1=2 3=4
// B、1=2 2=3
// C、2=1 4=3
// D、2=1 3=2
// 53、现要求声明一个集合,并将字符串添加到集合中,编写了如下代码,其中错误的是第几行:
// NSString * aString = [[NSString alloc] initWithString:@"iLanou"]; (1)
// [aString autorelease]; (2)
// NSArray * arr = [NSArray array]; (3)
// [arr addObject:aString]; (4)
// NSLog(@"string = %lu",[aString retainCount]);
// 答案:(C)
// A、(1)
// B、(2)
// C、(3)
// D、(4)
// 54、读代码:
// NSString *str=@"hello";
// NSMutableSet *mt=[NSMutableSet setWithObjects:str, nil];
// [mt addObject:str];
// NSLog(@"%lu",mt.count);
// 结果是:
// 答案:(A)
// A、1
// B、2
// C、3
// D、4
// 55、下列代码正确的输出结果是:
// NSString * urlStr = @"www.lanou3g.com";
// NSRange range = NSMakeRange(4,7);
// NSString *prefix = [urlStr substringWithRange:range];
// NSLog(@"%@",prefix);
// 答案:(B)
// A、lan
// B、lanou3g
// C、www.lan
// D、ou3g
// 56、下面哪个选项是正确的:
// 答案:(B)
// A、用继承可以扩展一个类,要调用扩展的方法,既可以用父类,也可以用子类
// B、用类目可以扩展一个类,可以直接用该类或该类的实例对象,去调用该类目扩展的方法
// C、延展就是类目
// D、可以在一个类的外部,调用这个类延展的方法
// 57、NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
// [formatter setAMSymbol:@"AM"];
// [formatter setPMSymbol:@"PM"];
// [formatter setDateFormat:@"YY-MM-dd hh:mm:ss aaa"];
// NSString * currentDate = [formatter stringFromDate:[NSDate date]];
// NSLog(@"%@",currentDate);
// 打印结果是:
// 答案:(D)
// A、2012-05-31 17:45:04 PM
// B、12-05-31 17:45:04
// C、2012-05-31 17:45:04
// D、12-05-31 05:45:04 PM
// 58、对于语句NSString* testObject = [[NSData alloc] init];关于testObject是什么类型对象,以下说法正确的是:
// 答案:(A)
// A、编译时,NSString类型,运行时,NSData类型
// B、编译与运行时,都是NSData类型
// C、编译与运行时,都是NSString类型
// D、运行时,NSString类型,编译时,NSData类型
// 59、下面程序段的输出结果是什么:
// NSMutableArray * arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3", nil];
// [arr1 addObject:@"0"];
// [arr1 replaceObjectAtIndex:2 withObject:@"3"];
// NSLog(@"%@",arr1);
// 答案:(B)
// A、0,1,2,3
// B、1,2,3,0
// C、1,3,3,0
// D、0,3,2,3
// 60、现有自定义类Student,下列选项中Student类的便利构造器编写正确的是:
// 答案:(D)
// A、
// -(id) initWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// return stu;
// }
// B、
// +(id) studentWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// return stu;
// }
// C、
// +(id) studentWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// [stu release];
// return stu;
// }
// D、
// +(id) studentWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// [stu autorelease];
// return stu;
// }
// 61、类何时调用dealloc方法:
// 答案:(D)
// A、[property release]后
// B、[instance release]后
// C、[super dealloc]时
// D、当引用计数为0时.
// 62、实例变量默认的访问修饰符是:
// 答案:(C)
// A、@public
// B、@private
// C、@protected
// D、@package
// 63、关于KVC的描述正确的是:
// 答案:(B)
// A、KVC是指"Key-Value Observing"
// B、是一种间接访问对象的属性的机制。
// C、只能访问对象的属性。
// D、当对象的属性值改变时,我们能收到一个通知。
// 64、NSRange是什么数据类型:
// 答案:(C)
// A、数组
// B、字典
// C、结构体
// D、指针
// 65、现有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)
// A、walk();
// B、super.walk;
// C、[self walk];
// D、self.walk();
// 66、写出下面程序段的输出结果:
// NSString * aString = [[NSString alloc] initWithString:@"123"];
// [aString autorelease];
// NSMutableArray * arr = [NSMutableArray array];
// [arr addObject:aString];
// NSLog(@"string = %lu",[aString retainCount]);
// 答案:(C)
// A、1
// B、0
// C、整型最大值
// D、2
// 67、下列哪个操作不会引起引用计数(retaincount)的变化是:
// 答案:(B)
// A、NSString *str1 = [[NSString stringWithFormat:@"hehe"];
// B、int a=1;
// C、NSMutableData *data1 = [NSMutableData allocWithZone:data2];
// D、NSArray *arr1 = [[NSArray alloc]initWithArray:arr2];
// 68、下面程序段的输出结果是什么:
// NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];
// [dic setObject:@"1" forKey:@"3"];
// [dic removeObjectForKey:@"1"];
// NSLog(@"%@",dic);
// 答案:(C)
// A、1=3 2=3 3=4
// B、1=2 1=3 3=4
// C、2=1 3=1 4=3
// D、3=1 3=2 4=3
// 69、NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];
// NSArray *arr = [[NSArray alloc] initWithArray:[dic allKeys]];
// NSString *str = [[NSString alloc] initWithFormat:[arr objectAtIndex:0],[arr objectAtIndex:1],[arr objectAtIndex:2]];
// NSLog(@"%@",str);
//// 结果是:
// 答案:(C)
// A、123
// B、234
// C、2
// D、3
// 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、iLanou
// B、iL123
// C、iLaios
// D、iLa123
// 71、查看下列代码,能正确输出number的选项是:
// @interface MyClass : NSObject
// {
// int number;
// }
// +(void) printNumber;
// @end
// @implementation MyClass
// +(void) printNumber
// {
// number =10;
// NSLog(@""%d"",number);
// }
// @end
// 答案:(D)
// A、[MyClass printNumber];
// B、MyClass * obj = [[MyClass alloc] init]; [obj printNumber];
// C、printNumber();
// D、编译错误,无法执行。
// 72、下面程序段的输出结果是什么:
// NSString * aString = [[NSString alloc] initWithString:@"hehe"];
// [aString autorelease];
// NSMutableArray *arr = [NSMutableArray array];
// [arr addObject:aString];
// NSLog(@"string = %d",[aString retainCount]);
// 答案:(A)
// A、string = -1
// B、string = 0
// C、string = 1
// D、string = 2
// 73、下面程序段的输出结果是什么:
// 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、2=1 3=3 4=3
// B、1=2 3=3 3=4
// C、1=2 3=3 3=3
// D、程序崩溃
// 74、下面程序段的输出结果是什么:
// int a = 10;
// NSNumber *b = [[NSNumber alloc] initWithInt:a];
// NSLog(@"%d", a+++b);
// 答案:(D)
// A、21
// B、20
// C、30
// D、编译错误
// 75、下面程序段的输出结果是什么:
// NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"1",@"3",@"1",@"4", nil];
// NSArray *arr1 = [[NSArray alloc] initWithArray:[dic allKeys]];
// NSArray *arr2 = [[NSArray alloc] initWithArray:[dic allValues]];
// NSMutableDictionary *dic2 = [[NSMutableDictionary alloc] initWithObjects:arr1 forKeys:arr2];
// NSLog(@"%@",dic2);
// 答案:(C)
// A、1=2 1=3 1=4
// B、2=1 3=1 4=1
// C、1=4
// D、4=1
// 76、NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// NSString *str = [NSString stringWithFormat:@”abc”];
// NSString *str2 = [str retain];
// [pool release];
// NSLog(@”str retainCount = %d,str2 retainCount = %d”,[str retainCount],[str2 retainCount]);
// 上述代码打印结果正确的是:
// 答案:(C)
// A、str retainCount = 2,str2 retainCount = 2
// B、str retainCount = 0,str2 retainCount = 1
// C、str retainCount = 1,str2 retainCount = 1
// D、str retainCount = 2,str2 retainCount = 0
// 77、关于内存管理的描述错误的是:
// 答案:(D)
// A、alloc与dealloc是对应的,前者分配内存,后者回收内存
// B、retain与release是对应的,前者retainCount加1,后者retainCount减1
// C、当对象的retainCount为0时,dealloc会被系统调用
// D、iOS5之后的ARC指的是系统垃圾回收
// 78、NSMutableDictionary字典中删除对象可以使用下面那个方法:
// 答案:(D)
// A、filteredArrayUsingPredicate:
// B、arrayByAddingObject:
// C、initWithCapacity:
// D、setValue:forKey:
// 79、有如下一个类定义
// @interface MyClass:NSObject
// @property(nonatomic,retain)NSString *str;
// @end
// @implementation MyClass
// (1)
// -(NSString *)str
// {
// return str;
// }
// -(void)dealloc
// {
// self.str = nil;
// [super dealloc];
// }
// @end
// 答案:(C)
// A、
// -(void)setStr:(NSString *)newStr
// {
// str = newStr;
// }
// B、
// -(void)setStr:(NSString *)newStr
// {
// [str release];
// str = [newStr retain];
// }
// C、
// -(void)setStr:(NSString *)newStr
// {
// if(str != newStr)
// {
// [str release];
// str = [newStr retain];
// }
// }
// D、
// -(void)setStr:(NSString *)newStr
// {
// [newStr retain]
// [str release] = newStr;
// }
// 80、对于下面代码说法正确的是:
// @property (copy,nonatomic,readonly)NSString * calValue;
// 答案:(D)
// A、没有getter方法,当对calvalue赋值时,将产生一个NSString副本。
// B、此属性可保证多线程安全。
// C、此属性在合成时可以生成设置器方法。
// D、此属性只能读取,不能赋值。
// ※ 判断题(共10题,每题2分)
// 1、在OC中,数组保存的只能是对象。
// 答案:(T)
// 正确
// 错误
// 2、实例对象都是通过调用类方法生成的。
// 答案:(T)
// 正确
// 错误
// 3、Objective-C可以多重继承。
// 答案:(F)
// 正确
// 错误
// 4、协议中定义的方法默认是必须实现的。
// 答案:(T)
// 正确
// 错误
// 5、一个文件中可以声明多个类。
// 答案:(T)
// 正确
// 错误
// 6、OC中如果向空指针nil发送消息,程序会崩溃的。
// 答案:(F)
// 正确
// 错误
// 7、在动态(实例)方法中,self是指调用当前方法的那个对象。
// 答案:(T)
// 正确
// 错误
// 8、便利构造器产生的对象应当由使用者进行销毁。
// 答案:(F)
// 正确
// 错误
// 9、方法需要传递多个参数时,参数以逗号分隔。
// 答案:(F)
// 正确
// 错误
// 10、注释可以出现在程序的任何位置。
// 答案:(T)
// 正确
// 错误
// [关闭]
//
// return 0;
//}
//
// C语言(iOS班)
// Objective-C
// DAY_1
// DAY_2
// DAY_3
// DAY_4
// DAY_5
// DAY_6
// DAY_7
// DAY_8
// DAY_9
// DAY_10
// DAY_11
// UI课程
// //
//
// Objective-C考试 [关闭]
//
// ※选择题(共80题,每题1分)
// 1、NSString *name = [[NSString alloc]initWithString:@"张三"];
// NSLog(@"%d",[name retainCount]);
// 上述代码打印结果是:
// 答案:(A)
// A、-1
// B、0
// C、1
// D、2
// 2、经过下列哪种操作后需要使用release方法。
// 答案:(C)
// A、delegate
// B、assign
// C、retain
// D、dealloc
// 3、必须实现的协议方法使用:关键字声明.
// 答案:(C)
// A、@property
// B、@interface
// C、@required
// D、@protocol
// 4、关于集合描述不正确的是:
// 答案:(A)
// A、所有的集合都可以添加元素。
// B、集合分为可变集合、不可变集合。
// C、数组、字典、NSSet这三种集合存储数据的方式不同。
// D、所有集合都能保存id类型数据。
// 5、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
// B、5
// C、6
// D、7
// 6、下列说法中错误的是:
// 答案:(C)
// A、Objective-C不用"函数调用",而用互相传递讯息.
// B、Objective-C一个完整的类分为interface和implementation两块
// C、Objective-C对象使用new分配内存,用delete释放
// D、Objective-C协议分为非正式协议和正式协议
// 7、Objective-C中包含一个自定义的头文件应该使用:
// 答案:(C)
// A、#include ""
// B、#include<>
// C、#import ""
// D、#import<>
// 8、用哪个关键字定义协议中必须实现的方法:
// 答案:(D)
// A、@optional
// B、@protected
// C、@private
// D、不用写关键字
// 9、NSMutableString * str = [[NSMutableString alloc] initWithFormat:@"123"];
// NSLog(@"str = %p",str);
// [str appendFormat:@"456"];
// NSLog(@"str = %p",str);
// 上面代码对字符串str进行拼接后,2次打印的地址是否相同:
// 答案:(A)
// A、相同
// B、不同
// C、随机打印
// D、有时相同,有时不同
// 10、以下代码执行后,person对象的retain count是多少:
// Person * person = [[Person alloc] init];
// [person retain]; [person release];
// 答案:(B)
// A、0
// B、1
// C、2
// D、3
// 11、下列哪个选项与@synthesize配合使用:
// 答案:(D)
// A、@end
// B、@interface
// C、@implementation
// D、@property
// 12、OC中布尔(BOOL)类型的变量的值只有:
// 答案:(B)
// A、1/0
// B、YES/NO
// C、true/false
// D、1/-1
// 13、下列哪个选项不需要release方法:
// 答案:(C)
// A、[[NSString alloc]init];
// B、[[NSString alloc] initWithString:@”hehe”];
// C、[[NSArray arrayWithArray: arr1];
// D、[[NSMutableDictionary alloc] init];
// 14、OC中,所有类的根类是:
// 答案:(A)
// A、NSObject
// B、NSDate
// C、NSCoding
// D、UIView
// 15、NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a value" forKey:@"aKey"];
// NSLog(@"%@",[dict objectForKey:@"aKey"]);
// [dict release];
// 控制台中打印的最后一条信息会是:
// 答案:(C)
// A、a value
// B、aKey : a value
// C、崩溃信息
// D、a value : aKey
// 16、下面关于类概念的描述中,错误的是:
// 答案:(D)
// A、类是抽象数据类型的实现
// B、类是具有共同行为的若干对象的统一描述体
// C、类是创建对象的模板
// D、类就是C语言中的结构体类型
// 17、名为print::的方法有几个传入参数:
// 答案:(C)
// A、0
// B、1
// C、2
// D、3
// 18、下面哪些选项是类:
// 答案:(A)
// A、导演
// B、张艺谋
// C、擎天柱
// D、辉哥的雪铁龙
// 19、下列选项中全部属于对象的是:
// 答案:(C)
// A、我的白色iPhone4s;Mac Mini
// B、狗;老虎
// C、邻居家的猫咪“贝贝”;我的弟弟“张三”
// D、保时捷;犀利哥
// 20、不会立刻使引用计数器改变的是:
// 答案:(C)
// A、release
// B、alloc
// C、autorelease
// D、retain
// 21、在OC中类的接口声明关键字为:
// 答案:(B)
// A、@import
// B、@interface
// C、@implemention
// D、@protocol
// 22、下面哪些选项是属性的正确声明方式:
// 答案:(C)
// A、@property(nonatomic,retain)NSString myString;
// B、@property(nonatomic,assign)NSString * myString;
// C、@property(nonatomic,assign)int mynumber;
// D、@property(nonatomic,retain)int mynumber;
// 23、在OC中,类的定义包括两部分(声明与实现),其中实现部分是:
// 答案:(C)
// A、@import
// B、@interface
// C、@implementation
// D、@protocol
// 24、使用 Objective-C语言输出“This is a Objective-C program.”正确的是:
// 答案:(D)
// A、NSLog(@"%s",This is a Objective-C program.);
// B、NSLog(@"%@",This is a Objective-C program.);
// C、NSLog(@"This is a Objective-C program.",%@);
// D、NSLog(@"This is a Objective-C program.");
// 25、OC中与alloc相反的方法是:
// 答案:(C)
// A、release
// B、retain
// C、dealloc
// D、free
// 26、向Xcode控制台输出一个字符串应该用:
// 答案:(A)
// A、NSLog()
// B、Printf()
// C、NSPrintf()
// D、scanf()
// 27、-(id)setName:(NSString *)name :(NSString *)sex age:(int)age的方法名是:
// 答案:(C)
// A、-(id)setName:(NSString *)name :(NSString *)sex age:(int)age
// B、-setName:name :sex age:age
// C、setName: : age:
// D、setName:name:age:
// 28、关于类和对象的概念,下列属于对象的是:
// 答案:(C)
// A、奥迪A6
// B、保龄球
// C、世界冠军刘翔
// D、西红柿
// 29、OC中的委托最好声明成:
// 答案:(B)
// A、retain
// B、assign
// C、copy
// D、readonly
// 30、NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three",nil];
// NSLog(@"%@",[array objectAtIndex:1]);
// NSLog(@"%@",[array objectAtIndex:3]);
// 控制台中打印的最后一条信息会是:
// 答案:(D)
// A、one
// B、two
// C、three
// D、崩溃信息
// 31、下列有效的键路径是:
// 答案:(B)
// A、[foo valueForKeyPath:@”1SomeMember”]
// B、[foo valueForKeyPath:@”someMember.someAttribute”]
// C、[foo valueForKeyPath:@”SOMEMEMBER@someAttibute”]
// D、[foo valueForKeyPath:@”some Member”]
// 32、@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)
// A、per.name = -1;
// B、per.name = 0;
// C、per.name = 1;
// D、per.name = 2;
// 33、关于类目的说法正确的有:
// 答案:(A)
// A、类目可以为所有的类添加新方法。
// B、类目中添加的方法比原类中定义的方法级别要低。
// C、定义类目需要使用关键字category。
// D、类目可以随意使用。
// 34、下面哪个选项对集合的描述是正确的:
// 答案:(D)
// A、集合内不能存不同类型的对象
// B、集合内可以存整型的数
// C、字典内键值可以相同,但是每个键值对应的对象必须不同
// D、集合内只能存对象
// 35、关于NSSet描述正确的有:
// 答案:(B)
// A、NSSet可以存放任何数据类型的数据。
// B、NSSet存放数据是无序的。
// C、NSSet可以通过下标获取数据。
// D、NSSet存放的数据是有序的。
// 36、下列代码:
// @property(nonatomic,assign)id<Painting>myObject;
// 答案:(C)
// A、是说myObject是Painting分类的一部分
// B、是说myObject遵从于Painting分类
// C、是说myObject遵从于Painting协议
// D、不是合法的Objective-C语法格式
// 37、关于协议描述不正确的是:
// 答案:(D)
// A、协议分正式和非正式协议。
// B、在要求确认协议的类必须实现协议中的方法时,可以使用@required。
// C、一个协议可以被多个类确认。
// D、协议中声明的方法,默认是@optional的。
// 38、在OC中扩展类的方法的形式不包括:
// 答案:(B)
// A、继承
// B、多态
// C、类目
// D、延展
// 39、关于类目、延展的描述错误的是:
// 答案:(B)
// A、延展主要为类提供“私有”方法
// B、类目、延展不但能为类添加方法,而且都可以添加新的实例变量
// C、无论能否拿到类的源码,类目都可以对其扩展
// D、类目和延展声明语法不同
// 40、自定义一个Person类,下面哪个选项是规范的便利构造器声明方式:
// 答案:(D)
// A、-(id)personWithName:(NSString *)theName;
// B、-(id)personwithName:(NSString *)theName;
// C、+(id)personwithName:(NSString *)theName;
// D、+(id)personWithName:(NSString *)theName;
// 41、Objective-C语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:
// 答案:(C)
// A、@public
// B、@private
// C、@protected
// D、@friendly
// 42、以下说法正确的是:
// 答案:(C)
// A、求数组的内容的个数用length方法
// B、字典是根据其位置来索引数据的
// C、协议中定义的方法默认是必须实现的
// D、定义类目必须要拿到自己类的源代码
// 43、下面哪个选项无内存问题的:
// 答案:(C)
// 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];
// }
// 44、以下对类的描述不正确的是:
// 答案:(C)
// A、类的接口部分可以包含实例变量、属性和方法
// B、可以把声明和实现都放到.h文件中
// C、一对文件(Person.h Person.m)只能定义一个类
// D、类比较抽象,对象比较具体
// 45、NSString和 NSMutableString的关系和区别描述不正确的是:
// 答案:(D)
// A、NSString是不可变字符串,即本身内容不能被改变。
// B、NSMutableString是可变字符串,即本身内容可修改。
// C、NSMutableString是NSString的子类。
// D、NSString和NSMutableString没有任何关系。
// 46、下面程序段的输出结果是什么:
// NSArray * arr1 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
// NSString *str;
// str = [arr1 objectAtIndex:2];
// NSLog(@"%@",str);
// 答案:(C)
// A、1
// B、2
// C、3
// D、程序崩溃
// 47、关于KVC的描述正确的是:
// 答案:(A)
// A、KVC是指“键-值-编码”。
// B、是一种直接访问对象的属性的机制。
// C、只能访问对象的属性。
// D、当对象的属性值改变时,我们能收到一个通知。
// 48、下面描述正确的选项是:
// 答案:(B)
// A、当计数器为1时,dealloc方法由系统自动调用
// B、一个对象在引用计数变为0时,会调用自己的dealloc方法
// C、在dealloc方法里,应该在[super dealloc]后释放本类所拥有的对象
// D、开启ARC后,可以重载dealloc,必须在dealloc里写 [super dealloc]方法
// 49、简单类型的成员比如:int类型成员在使用@property()时,括号中应使用:
// 答案:(A)
// A、assign
// B、copy
// C、retain
// D、auto
// 50、下列哪个选项不能作为property的可选属性:
// 答案:(A)
// A、alloc
// B、retain
// C、atomic
// D、strong
// 51、NSRange的成员变量有:
// 答案:(A)
// A、location,length
// B、width,height
// C、location,height
// D、length,width
// 52、下面程序段的输出结果是什么:
// NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];
// [dic removeObjectForKey:@"3"];
// NSLog(@"%@",dic);
// 答案:(C)
// A、1=2 3=4
// B、1=2 2=3
// C、2=1 4=3
// D、2=1 3=2
// 53、现要求声明一个集合,并将字符串添加到集合中,编写了如下代码,其中错误的是第几行:
// NSString * aString = [[NSString alloc] initWithString:@"iLanou"]; (1)
// [aString autorelease]; (2)
// NSArray * arr = [NSArray array]; (3)
// [arr addObject:aString]; (4)
// NSLog(@"string = %lu",[aString retainCount]);
// 答案:(C)
// A、(1)
// B、(2)
// C、(3)
// D、(4)
// 54、读代码:
// NSString *str=@"hello";
// NSMutableSet *mt=[NSMutableSet setWithObjects:str, nil];
// [mt addObject:str];
// NSLog(@"%lu",mt.count);
// 结果是:
// 答案:(A)
// A、1
// B、2
// C、3
// D、4
// 55、下列代码正确的输出结果是:
// NSString * urlStr = @"www.lanou3g.com";
// NSRange range = NSMakeRange(4,7);
// NSString *prefix = [urlStr substringWithRange:range];
// NSLog(@"%@",prefix);
// 答案:(B)
// A、lan
// B、lanou3g
// C、www.lan
// D、ou3g
// 56、下面哪个选项是正确的:
// 答案:(B)
// A、用继承可以扩展一个类,要调用扩展的方法,既可以用父类,也可以用子类
// B、用类目可以扩展一个类,可以直接用该类或该类的实例对象,去调用该类目扩展的方法
// C、延展就是类目
// D、可以在一个类的外部,调用这个类延展的方法
// 57、NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
// [formatter setAMSymbol:@"AM"];
// [formatter setPMSymbol:@"PM"];
// [formatter setDateFormat:@"YY-MM-dd hh:mm:ss aaa"];
// NSString * currentDate = [formatter stringFromDate:[NSDate date]];
// NSLog(@"%@",currentDate);
// 打印结果是:
// 答案:(D)
// A、2012-05-31 17:45:04 PM
// B、12-05-31 17:45:04
// C、2012-05-31 17:45:04
// D、12-05-31 05:45:04 PM
// 58、对于语句NSString* testObject = [[NSData alloc] init];关于testObject是什么类型对象,以下说法正确的是:
// 答案:(A)
// A、编译时,NSString类型,运行时,NSData类型
// B、编译与运行时,都是NSData类型
// C、编译与运行时,都是NSString类型
// D、运行时,NSString类型,编译时,NSData类型
// 59、下面程序段的输出结果是什么:
// NSMutableArray * arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3", nil];
// [arr1 addObject:@"0"];
// [arr1 replaceObjectAtIndex:2 withObject:@"3"];
// NSLog(@"%@",arr1);
// 答案:(B)
// A、0,1,2,3
// B、1,2,3,0
// C、1,3,3,0
// D、0,3,2,3
// 60、现有自定义类Student,下列选项中Student类的便利构造器编写正确的是:
// 答案:(D)
// A、
// -(id) initWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// return stu;
// }
// B、
// +(id) studentWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// return stu;
// }
// C、
// +(id) studentWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// [stu release];
// return stu;
// }
// D、
// +(id) studentWithName:(NSString *) newName{
// Student * stu = [[Student alloc] init];
// stu.Name = newName;
// [stu autorelease];
// return stu;
// }
// 61、类何时调用dealloc方法:
// 答案:(D)
// A、[property release]后
// B、[instance release]后
// C、[super dealloc]时
// D、当引用计数为0时.
// 62、实例变量默认的访问修饰符是:
// 答案:(C)
// A、@public
// B、@private
// C、@protected
// D、@package
// 63、关于KVC的描述正确的是:
// 答案:(B)
// A、KVC是指"Key-Value Observing"
// B、是一种间接访问对象的属性的机制。
// C、只能访问对象的属性。
// D、当对象的属性值改变时,我们能收到一个通知。
// 64、NSRange是什么数据类型:
// 答案:(C)
// A、数组
// B、字典
// C、结构体
// D、指针
// 65、现有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)
// A、walk();
// B、super.walk;
// C、[self walk];
// D、self.walk();
// 66、写出下面程序段的输出结果:
// NSString * aString = [[NSString alloc] initWithString:@"123"];
// [aString autorelease];
// NSMutableArray * arr = [NSMutableArray array];
// [arr addObject:aString];
// NSLog(@"string = %lu",[aString retainCount]);
// 答案:(C)
// A、1
// B、0
// C、整型最大值
// D、2
// 67、下列哪个操作不会引起引用计数(retaincount)的变化是:
// 答案:(B)
// A、NSString *str1 = [[NSString stringWithFormat:@"hehe"];
// B、int a=1;
// C、NSMutableData *data1 = [NSMutableData allocWithZone:data2];
// D、NSArray *arr1 = [[NSArray alloc]initWithArray:arr2];
// 68、下面程序段的输出结果是什么:
// NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];
// [dic setObject:@"1" forKey:@"3"];
// [dic removeObjectForKey:@"1"];
// NSLog(@"%@",dic);
// 答案:(C)
// A、1=3 2=3 3=4
// B、1=2 1=3 3=4
// C、2=1 3=1 4=3
// D、3=1 3=2 4=3
// 69、NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];
// NSArray *arr = [[NSArray alloc] initWithArray:[dic allKeys]];
// NSString *str = [[NSString alloc] initWithFormat:[arr objectAtIndex:0],[arr objectAtIndex:1],[arr objectAtIndex:2]];
// NSLog(@"%@",str);
//// 结果是:
// 答案:(C)
// A、123
// B、234
// C、2
// D、3
// 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、iLanou
// B、iL123
// C、iLaios
// D、iLa123
// 71、查看下列代码,能正确输出number的选项是:
// @interface MyClass : NSObject
// {
// int number;
// }
// +(void) printNumber;
// @end
// @implementation MyClass
// +(void) printNumber
// {
// number =10;
// NSLog(@""%d"",number);
// }
// @end
// 答案:(D)
// A、[MyClass printNumber];
// B、MyClass * obj = [[MyClass alloc] init]; [obj printNumber];
// C、printNumber();
// D、编译错误,无法执行。
// 72、下面程序段的输出结果是什么:
// NSString * aString = [[NSString alloc] initWithString:@"hehe"];
// [aString autorelease];
// NSMutableArray *arr = [NSMutableArray array];
// [arr addObject:aString];
// NSLog(@"string = %d",[aString retainCount]);
// 答案:(A)
// A、string = -1
// B、string = 0
// C、string = 1
// D、string = 2
// 73、下面程序段的输出结果是什么:
// 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、2=1 3=3 4=3
// B、1=2 3=3 3=4
// C、1=2 3=3 3=3
// D、程序崩溃
// 74、下面程序段的输出结果是什么:
// int a = 10;
// NSNumber *b = [[NSNumber alloc] initWithInt:a];
// NSLog(@"%d", a+++b);
// 答案:(D)
// A、21
// B、20
// C、30
// D、编译错误
// 75、下面程序段的输出结果是什么:
// NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"1",@"3",@"1",@"4", nil];
// NSArray *arr1 = [[NSArray alloc] initWithArray:[dic allKeys]];
// NSArray *arr2 = [[NSArray alloc] initWithArray:[dic allValues]];
// NSMutableDictionary *dic2 = [[NSMutableDictionary alloc] initWithObjects:arr1 forKeys:arr2];
// NSLog(@"%@",dic2);
// 答案:(C)
// A、1=2 1=3 1=4
// B、2=1 3=1 4=1
// C、1=4
// D、4=1
// 76、NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// NSString *str = [NSString stringWithFormat:@”abc”];
// NSString *str2 = [str retain];
// [pool release];
// NSLog(@”str retainCount = %d,str2 retainCount = %d”,[str retainCount],[str2 retainCount]);
// 上述代码打印结果正确的是:
// 答案:(C)
// A、str retainCount = 2,str2 retainCount = 2
// B、str retainCount = 0,str2 retainCount = 1
// C、str retainCount = 1,str2 retainCount = 1
// D、str retainCount = 2,str2 retainCount = 0
// 77、关于内存管理的描述错误的是:
// 答案:(D)
// A、alloc与dealloc是对应的,前者分配内存,后者回收内存
// B、retain与release是对应的,前者retainCount加1,后者retainCount减1
// C、当对象的retainCount为0时,dealloc会被系统调用
// D、iOS5之后的ARC指的是系统垃圾回收
// 78、NSMutableDictionary字典中删除对象可以使用下面那个方法:
// 答案:(D)
// A、filteredArrayUsingPredicate:
// B、arrayByAddingObject:
// C、initWithCapacity:
// D、setValue:forKey:
// 79、有如下一个类定义
// @interface MyClass:NSObject
// @property(nonatomic,retain)NSString *str;
// @end
// @implementation MyClass
// (1)
// -(NSString *)str
// {
// return str;
// }
// -(void)dealloc
// {
// self.str = nil;
// [super dealloc];
// }
// @end
// 答案:(C)
// A、
// -(void)setStr:(NSString *)newStr
// {
// str = newStr;
// }
// B、
// -(void)setStr:(NSString *)newStr
// {
// [str release];
// str = [newStr retain];
// }
// C、
// -(void)setStr:(NSString *)newStr
// {
// if(str != newStr)
// {
// [str release];
// str = [newStr retain];
// }
// }
// D、
// -(void)setStr:(NSString *)newStr
// {
// [newStr retain]
// [str release] = newStr;
// }
// 80、对于下面代码说法正确的是:
// @property (copy,nonatomic,readonly)NSString * calValue;
// 答案:(D)
// A、没有getter方法,当对calvalue赋值时,将产生一个NSString副本。
// B、此属性可保证多线程安全。
// C、此属性在合成时可以生成设置器方法。
// D、此属性只能读取,不能赋值。
// ※ 判断题(共10题,每题2分)
// 1、在OC中,数组保存的只能是对象。
// 答案:(T)
// 正确
// 错误
// 2、实例对象都是通过调用类方法生成的。
// 答案:(T)
// 正确
// 错误
// 3、Objective-C可以多重继承。
// 答案:(F)
// 正确
// 错误
// 4、协议中定义的方法默认是必须实现的。
// 答案:(T)
// 正确
// 错误
// 5、一个文件中可以声明多个类。
// 答案:(T)
// 正确
// 错误
// 6、OC中如果向空指针nil发送消息,程序会崩溃的。
// 答案:(F)
// 正确
// 错误
// 7、在动态(实例)方法中,self是指调用当前方法的那个对象。
// 答案:(T)
// 正确
// 错误
// 8、便利构造器产生的对象应当由使用者进行销毁。
// 答案:(F)
// 正确
// 错误
// 9、方法需要传递多个参数时,参数以逗号分隔。
// 答案:(F)
// 正确
// 错误
// 10、注释可以出现在程序的任何位置。
// 答案:(T)
// 正确
// 错误
// [关闭]
//
// return 0;
//}