oc中的小问题
2015-11-17 17:14
274 查看
1.@implementation Person
@synthesizeage
-(void)setAge:(int)newAge
{
self.age= newAge;
}
@end
为Person实例的name属性赋值时,程序的运行结果是:
( C )。
A.程序正常运行
B.程序立即崩溃
C.程序陷入死循环
D.不确定
这道题应该选C,因为 self.age是点语法,当点语法在等号左边的时候是setter语法,在等号右边的时候是getter语法
所以当执行到 self.age= newAge;是会调用setter语法,所以程序就会陷入死循环
2.查看下列代码,能正确输出number的选项是( D )。
@interface MyClass : NSObject{
intnumber;
}
+(void) printNumber;
@end
@implementation MyClass
+(void) printNumber
{
number =10;
NSLog(@"%d",number);
}
@end
A.[MyClassprintNumber];
B.MyClass * obj = [[MyClass alloc] init];
[objprintNumber];
C.printNumber();
D.编译错误,无法执行
在‘+’方法中不能出现变量,所以错误,如果把‘+’改成‘-’就对了
3.int largenumber =1000000000;
for(inti=0;i<largenumber;i++){
Person * p = [Person person];
[pstudy];
}
这段代码有什么问题,应该怎么去改?为什么?(不要修改以写出的代码)
因为便利构造器产生的对象如果没有autoreleasepool的话是无法释放的,所以当循环数值过大时,产生的对象会越来越多而且使用过的对象无法释放,内存占用越来越大,严重影响性能.所以要在for循环中使用autoreleasepool,即
intlargenumber = 1000000000;
for(int i=0;i<largenumber;i++){
@autoreleasepool{
Person * p = [Person person];
[p study];
}
}
.4.下面程序段的输出结果是( C
)。
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);
A.1=2 1=3 1=4
B.2=1 3=1 4=1
C.1=4
D.4=1
字典输出的时候key在前,value在后
@synthesizeage
-(void)setAge:(int)newAge
{
self.age= newAge;
}
@end
为Person实例的name属性赋值时,程序的运行结果是:
( C )。
A.程序正常运行
B.程序立即崩溃
C.程序陷入死循环
D.不确定
这道题应该选C,因为 self.age是点语法,当点语法在等号左边的时候是setter语法,在等号右边的时候是getter语法
所以当执行到 self.age= newAge;是会调用setter语法,所以程序就会陷入死循环
2.查看下列代码,能正确输出number的选项是( D )。
@interface MyClass : NSObject{
intnumber;
}
+(void) printNumber;
@end
@implementation MyClass
+(void) printNumber
{
number =10;
NSLog(@"%d",number);
}
@end
A.[MyClassprintNumber];
B.MyClass * obj = [[MyClass alloc] init];
[objprintNumber];
C.printNumber();
D.编译错误,无法执行
在‘+’方法中不能出现变量,所以错误,如果把‘+’改成‘-’就对了
3.int largenumber =1000000000;
for(inti=0;i<largenumber;i++){
Person * p = [Person person];
[pstudy];
}
这段代码有什么问题,应该怎么去改?为什么?(不要修改以写出的代码)
因为便利构造器产生的对象如果没有autoreleasepool的话是无法释放的,所以当循环数值过大时,产生的对象会越来越多而且使用过的对象无法释放,内存占用越来越大,严重影响性能.所以要在for循环中使用autoreleasepool,即
intlargenumber = 1000000000;
for(int i=0;i<largenumber;i++){
@autoreleasepool{
Person * p = [Person person];
[p study];
}
}
.4.下面程序段的输出结果是( C
)。
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);
A.1=2 1=3 1=4
B.2=1 3=1 4=1
C.1=4
D.4=1
字典输出的时候key在前,value在后
相关文章推荐
- C# Winform打开网页(网址url)Process.Start
- git 上传提示需要离开工作空间
- 利用自定义的SQL语句生成类代替实体类的使用
- 并查集 + 拓扑排序 hdu1811 Rank of Tetris
- java程序员第十五课 -MySQL数据库和SQL语言
- Condition使用总结
- iOS开发使用自己添加的字体
- 20151117 Linux下磁盘管理(centos 6.5)1.添加硬盘 2.硬盘分区 3.格式化硬盘 4.挂载硬盘 5.设置开机自动挂载】
- dubbo源码学习(一)之ExtensionLoader
- 导数中的最小化日志记录:测试和分析
- 最大独立集求解
- axure淘宝购买记录Project 2013软件+
- 字体sp转px
- 【C语言】【面试题】使用main函数的参数,实现一个整数计算机,程序可以接受三个参数
- java程序员第十四课 -JSP技术、JavaBean知识和EL表达式(重点)-JSP的开发模式,注册和登陆的案例
- quartz实现动态定时任务
- linux进程间的通信--信号量同步
- equals getClass
- sqlite第三方类库:FMDB使用
- JS :3秒后自动跳转功能