您的位置:首页 > 其它

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在后
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: