ios 面试题汇总

[一般问题] iOS面试1


1).@property(nonatomic,retain)NSString *str;
2).@property(nonatomic,copy)NSString *str;
1)和2)两张写法你习惯使用哪种,为什么?

 
 

                
        
1).@property(nonatomic,retain)NSString *str;
2).@property(nonatomic,copy)NSString *str;
1)和2)两张写法你习惯使用哪种,为什么?


答:常用1,分情况,retain是指针拷贝,copy是内容拷贝。 retain是同一地址,

 
 

 iOS面试2:



假设已经存在Aclass类
A.h
AClass *o;
AClass *p;
@property(nonatomic,copy) AClass *o;
@property(nonatomic,assign)AClass *p;

A.m
@synthesize o,p;
-(void)dealloc{
   [o release];
      [p release];
   [super dealloc];
}

-(void)initModel{
   AClass *b = [[AClass alloc] init];
   self.o = b;
   self.p = b;
   [b release];

   NSLog(@"[%@]",[o descrition]);
   NSLog(@"[%@]",[p descrition]);
}
这段代码有什么不妥之处吗?如果有请指出来,说说你会怎么进行修改。



 


1、assign 不需要释放
2、如果aclass 与 a有循环引用,属性需要用assign
3、对象copy 要实现nscopying 协议才行

 
 


 iOS面试3

 
A.h
NSString *o;
@property(nonatomic,retain)NSString *o;

A.m
@synthesize o;
-(void)dealloc{
    [o release];
    [super dealloc];
}

-(void)initModel{
   o = [[NSString alloc] initWithFormat:@"abcde"];
   self.o = [NSString stringWithFormat:@"aaaaa"];
   NSLog(@"%@",o);
}
这段代码有什么不妥之处吗?如果有请指出来,说说你会怎样修改。

 

o = [[NSString alloc] initWithFormat:@"abcde"];
冗余代码,没实际意义

 
 

 iOS面试4

A.h
NSObject *o;
@property(nonatomic,retain)NSObject*o;

A.m
@synthesize o;
-(void)dealloc{
    [o release];
    [super dealloc];
}

-(void)initModel{
   self.o = [[NSObject alloc] init];
   self.o = [[NSObject alloc] init];
   NSLog(@"%@",o);
}
这段代码有什么不妥之处吗?如果有请指出来,说说你会怎样修改。

 
 
self.o = [[NSObject alloc] init];
最后这个释放不掉,引用技术是2
一般是申请一个局部变量,然后赋值给属性,然后释放局部变量
self.o = [[[NSObject alloc] init] autorelease];

@property(nonatomic,retain)NSString *s 请写出关键字retain的内部原理。

地址拷贝

 
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值