您的位置:首页 > 移动开发 > Objective-C

我的模拟OC测试

2015-08-18 11:05 429 查看
Objective-C考试 [关闭]

※ 选择题(共80题,每题1分)

1、

面向对象的特性不包括:
答案:(D)
 A、封装 B、继承 C、多态 D、构造

2、

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

3、

下列哪个选项不需要release方法:
答案:(C)
 A、[[NSString alloc]init]; B、[[NSString alloc] initWithString:@”hehe”]; C、[[NSArray
arrayWithArray: arr1]; D、[[NSMutableDictionary alloc] init];

4、

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

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

上述代码打印结果是:
答案:(A)
 A、-1 B、0 C、1 D、2

5、

下列哪个选项与@synthesize配合使用:
答案:(D)
 A、@end B、@interface C、@implementation D、@property

6、

必须实现的协议方法使用:关键字声明.
答案:(C)
 A、@property B、@interface C、@required D、@protocol

7、

对于Objective-C中的方括号“[]”的作用,下列说法错误的是:
答案:(D)
 A、用于通知某个对象该做什么 B、方括号内第一项是对象,其余部分是你需要对象执行的操作 C、在Objective-C中通知对象执行某种操作,称为发送消息.(也叫调用方法) D、方括号中可以为空

8、

现有如下集合,能准确删除“张三”的代码是:

NSMutableDictionary * peoples=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"张三",@"左护法",@"李四",@"右使",@"唐sir",@"老大哥", nil];
答案:(A)
 A、[peoples
removeObjectForKey:@"左护法"]; B、[peoples removeObject:@"张三"]; C、[peoples removeObjectAtIndex:0]; D、[peoples removeAllObjects];

9、

OC中与alloc相反的方法是:
答案:(C)
 A、release B、retain C、dealloc D、free

10、

经过下列哪种操作后需要使用release方法。
答案:(C)
 A、delegate B、assign C、retain D、dealloc

11、

OC中,所有类的根类是:
答案:(A)
 A、NSObject B、NSDate C、NSCoding D、UIView

12、

关于集合描述不正确的是:
答案:(A)
 A、所有的集合都可以添加元素。 B、集合分为可变集合、不可变集合。 C、数组、字典、NSSet这三种集合存储数据的方式不同。 D、所有集合都能保存id类型数据。

13、

OC中的委托最好声明成:
答案:(B)
 A、retain B、assign C、copy D、readonly

14、

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

15、

下面哪些选项是类:
答案:(A)
 A、导演 B、张艺谋 C、擎天柱 D、辉哥的雪铁龙

16、

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three",nil];

NSLog(@"%@",[array objectAtIndex:1]);

NSLog(@"%@",[array objectAtIndex:3]);

控制台中打印的最后一条信息会是:
答案:(D)
 A、one B、two C、three D、崩溃信息

17、

以下代码执行后,person对象的retain count是多少:

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

[person retain]; [person release];
答案:(B)
 A、0 B、1 C、2 D、3

18、

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

19、

在OC中,类中成员变量的可见度(访问权限)不包括:
答案:(D)
 A、@public B、@protected C、@private D、@optional

20、

下面关于类概念的描述中,错误的是:
答案:(D)
 A、类是抽象数据类型的实现 B、类是具有共同行为的若干对象的统一描述体 C、类是创建对象的模板 D、类就是C语言中的结构体类型

21、

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

22、

Objective-C中包含一个自定义的头文件应该使用:
答案:(C)
 A、#include "" B、#include<> C、#import
"" D、#import<>

23、

用哪个关键字定义协议中必须实现的方法:
答案:(D)
 A、@optional B、@protected C、@private D、不用写关键字

24、

OC中布尔(BOOL)类型的变量的值只有:
答案:(B)
 A、1/0 B、YES/NO C、true/false D、1/-1

25、

名为print::的方法有几个传入参数:
答案:(C)
 A、0 B、1 C、2 D、3

26、

-(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:

27、

下面哪些选项是属性的正确声明方式:
答案:(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;

28、

使用 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.");

29、

下列选项中全部属于对象的是:
答案:(C)
 A、我的白色iPhone4s;Mac Mini B、狗;老虎 C、邻居家的猫咪“贝贝”;我的弟弟“张三” D、保时捷;犀利哥

30、

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

31、

关于类目的说法正确的有:
答案:(A)
 A、类目可以为所有的类添加新方法。 B、类目中添加的方法比原类中定义的方法级别要低。 C、定义类目需要使用关键字category。 D、类目可以随意使用。

32、

下面哪个选项对集合的描述是正确的:
答案:(D)
 A、集合内不能存不同类型的对象 B、集合内可以存整型的数 C、字典内键值可以相同,但是每个键值对应的对象必须不同 D、集合内只能存对象

33、

实例变量默认的访问修饰符是:
答案:(C)
 A、@public B、@private C、@protected D、@package

34、

Objective-C 语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:
答案:(C)
 A、@public B、@private C、@protected D、@friendly

35、

关于NSSet描述正确的有:
答案:(B)
 A、NSSet可以存放任何数据类型的数据。 B、NSSet存放数据是无序的。 C、NSSet可以通过下标获取数据。 D、NSSet存放的数据是有序的。

36、

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

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

37、

现要求声明一个集合,并将字符串添加到集合中,编写了如下代码,其中错误的是第几行:

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)

38、

现有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();

39、

下列有效的键路径是:
答案:(B)
 A、[foo valueForKeyPath:@”1SomeMember”] B、[foo
valueForKeyPath:@”someMember.someAttribute”] C、[foo valueForKeyPath:@”SOMEMEMBER@someAttibute”] D、[foo valueForKeyPath:@”some Member”]

40、

NSRange的成员变量有:
答案:(A)
 A、location,length B、width,height C、location,height D、length,width

41、

协议与委托的描述不正确的是:
答案:(C)
 A、委托是iOS的一种设计模式 B、协议里的方法默认是必须实现的 C、类接受了多个协议,这些协议写在父类后面的<>内,多个协议之间用“、”隔开 D、定义协议使用@protocol关键字

42、

声明一个返回值为NSArray,并且带两个字符串对象的BLOCK类型变量:
答案:(D)
 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)

43、

以下说法正确的是:
答案:(C)
 A、求数组的内容的个数用length方法 B、字典是根据其位置来索引数据的 C、协议中定义的方法默认是必须实现的 D、定义类目必须要拿到自己类的源代码

44、

下面哪个选项是正确的:
答案:(B)
 A、用继承可以扩展一个类,要调用扩展的方法,既可以用父类,也可以用子类 B、用类目可以扩展一个类,可以直接用该类或该类的实例对象,去调用该类目扩展的方法 C、延展就是类目 D、可以在一个类的外部,调用这个类延展的方法

45、

NSRange是什么数据类型:
答案:(C)
 A、数组 B、字典 C、结构体 D、指针

46、

自定义一个Person类,下面哪个选项是规范的便利构造器声明方式:
答案:(D)
 A、-(id)personWithName:(NSString *)theName; B、-(id)personwithName:(NSString *)theName; C、+(id)personwithName:(NSString *)theName; D、+(id)personWithName:(NSString
*)theName;

47、

下面哪个选项无内存问题的:
答案:(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];

}

48、

对于语句NSString* testObject = [[NSData alloc] init];关于testObject是什么类型对象,以下说法正确的是:
答案:(A)
 A、编译时,NSString类型,运行时,NSData类型 B、编译与运行时,都是NSData类型 C、编译与运行时,都是NSString类型 D、运行时,NSString类型,编译时,NSData类型

49、

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

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、程序崩溃

50、

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

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

51、

下列哪个选项不能作为property的可选属性:
答案:(A)
 A、alloc B、retain C、atomic D、strong

52、

现有自定义类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;

}

53、

创建对象时,对象的内存和指向对象的指针分别分配在哪里:
答案:(A)
 A、堆区,栈区 B、常量区,堆区 C、全局区,栈区 D、栈区,堆区

54、

在OC中扩展类的方法的形式不包括:
答案:(B)
 A、继承 B、多态 C、类目 D、延展

55、

读代码:

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

56、

有一个类Student,要求实现:定义一个实例初始化方法,初始化方法需要传入名字和性别:
答案:(B)
 A、

-(id)initWithName:(NSString *)name sex:(NSString *)sex{

  if (self){

    self.name = name;

    self.sex = sex;

  }

  return self;

} B、

-(id)initWithName:(NSString *)name sex:(NSString *)sex{

  if (self = [super init]) {

    self.name = name;

    self.sex = sex;

  }

  return self;

} C、

-(id)initWithName:(NSString *)name sex:(NSString *)sex{

  if (!self) {

    self.name = name;

    self.sex = sex;

  }

  return self;

} D、

-(id)initWithName:(NSString *)name sex:(NSString *)sex{

  if (self = [super init]) {

    self.name = name;

    self.sex = sex;

  }

}

57、

关于KVC的描述正确的是:
答案:(B)
 A、KVC是指"Key-Value Observing" B、是一种间接访问对象的属性的机制。 C、只能访问对象的属性。 D、当对象的属性值改变时,我们能收到一个通知。

58、

下面描述正确的选项是:
答案:(B)
 A、当计数器为1时,dealloc方法由系统自动调用 B、一个对象在引用计数变为0时,会调用自己的dealloc方法 C、在dealloc方法里,应该在[super dealloc]后释放本类所拥有的对象 D、开启ARC后,可以重载dealloc,必须在dealloc里写 [super dealloc]方法

59、

简单类型的成员比如:int类型成员在使用@property()时,括号中应使用:
答案:(A)
 A、assign B、copy C、retain D、auto

60、

关于KVC的描述正确的是:
答案:(A)
 A、KVC是指“键-值-编码”。 B、是一种直接访问对象的属性的机制。 C、只能访问对象的属性。 D、当对象的属性值改变时,我们能收到一个通知。

61、

下列代码正确的输出结果是:

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

62、

内存管理的关键字描述错误的是:
答案:(C)
 A、retaincount是指对象的引用计数。 B、retain关键字可以增大对象的引用计数。 C、release可以减小对象的引用计数,但autorelease不可以 D、dealloc方法不能直接调用

63、

下列代码:

@property(nonatomic,assign)id<Painting>myObject;
答案:(C)
 A、是说myObject是Painting分类的一部分 B、是说myObject遵从于Painting分类 C、是说myObject遵从于Painting协议 D、不是合法的Objective-C语法格式

64、

@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;

65、

关于协议描述不正确的是:
答案:(D)
 A、协议分正式和非正式协议。 B、在要求确认协议的类必须实现协议中的方法时,可以使用@required。 C、一个协议可以被多个类确认。 D、协议中声明的方法,默认是@optional的。

66、

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

67、

查看下列代码,能正确输出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、编译错误,无法执行。

68、

下列选项中不能正常为emp的name属性赋值的代码有:
答案:(B)
 A、emp.name=@"李嘉诚"; B、emp->name=@"李开复"; C、[emp setValue:@"柳传志" forKey:@"name"]; D、[emp setName:@"黄光裕"];

69、

有如下一个类定义

@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;

}

70、

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

71、

读代码

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

72、

NSMutableDictionary字典中删除对象可以使用下面那个方法:
答案:(D)
 A、filteredArrayUsingPredicate: B、arrayByAddingObject: C、initWithCapacity: D、setValue:forKey:

73、

关于内存管理的描述错误的是:
答案:(D)
 A、alloc与dealloc是对应的,前者分配内存,后者回收内存 B、retain与release是对应的,前者retainCount加1,后者retainCount减1 C、当对象的retainCount为0时,dealloc会被系统调用 D、iOS5之后的ARC指的是系统垃圾回收

74、

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

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

75、

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

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、程序崩溃

76、

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

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

77、

对于下面代码说法正确的是:

@property (copy,nonatomic,readonly)NSString * calValue;
答案:(D)
 A、没有getter方法,当对calvalue赋值时,将产生一个NSString副本。 B、此属性可保证多线程安全。 C、此属性在合成时可以生成设置器方法。 D、此属性只能读取,不能赋值。

78、

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

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

79、

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

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

80、

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

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

NSLog(@"%d",aString.retainCount);

aString = @"456";

NSLog(@"%d",aString.retainCount);

[aString release];

aString = @"789";

NSLog(@"%d",aString.retainCount);
答案:(D)
 A、1,2,1 B、1,1,0 C、1,-1,0 D、1,-1,-1

※ 判断题(共10题,每题2分)

1、

协议中定义的方法默认是必须实现的。
答案:(T)
 正确 错误

2、

方法需要传递多个参数时,参数以逗号分隔。
答案:(F)
 正确 错误

3、

在类方法中可以使用实例变量。
答案:(F)
 正确 错误

4、

不是每个对象都有引用计数。
答案:(F)
 正确 错误

5、

一个文件中可以声明多个类。
答案:(T)
 正确 错误

6、

在静态(类)方法中,self就是指当前的类名。
答案:(T)
 正确 错误

7、

注释可以出现在程序的任何位置。
答案:(T)
 正确 错误

8、

Objective-C 可以多重继承。
答案:(F)
 正确 错误

9、

在dealloc方法中对变量的释放顺序与初始化的顺序相同。
答案:(F)
 正确 错误

10、

retain的作用是引用计数减一。
答案:(F)
 正确 错误

[关闭]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  objective-c 测试