iOS面试题学习(1)内存管理

1.简述OC中内存管理机制。与retain配对使用的方法师dealloc还是release,为什么?需要alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,reatin,copy,nonatomic,actomic,strong,weak属性的作用?

答案:OC中使用了一种叫做引用计数的管理机制来管理内存中的对象。OC中的每个对象都对应着它自己的引用计数,当alloc方法创建对象时,持有引用计数会自动加1,当你向一个对象发送一个reatain消息时,引用计数同样会加1.相反当你向对象发送release消息时,持有计数减1,当对象的持有计数变为0时,对象会自动释放自己所占用的内存。

retain:引用计数+1——release:引用计数-1
alloc:申请内存空间——dealloc:释放内存空间
readwrite:表示既有getter,也有setter(默认)
readonly:表示只有getter,没有setter
nonayomic:不考虑线程安全
atomic:线程安全操作(默认)

线程安全情况下的setter和getter

-(NSString *)value{
   @synchronized(self){
     @synchronized(self){
      return[[_value reatin] autorelease];
     }   
   } 
   (void)setValue:(NSString*)value{
      @synchronized(self){
      [aValue retain] ;
      [_value release];
      _value=aValue;
    }
  }
}

reatin:release旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
assign:简单赋值,不更改索引计数(默认)
copy:其实就是建立了一个相同的对象,地址不同(retain:指针拷贝 copy:内容拷贝)
strong:(ARC下的)和(MRC)retain一样(默认)
weak:(ARC下的)和(MRC)assgin一样,weak当指向的内存释放掉自动nil化,防止野指针

unsafe_unretained声明一个弱应用,autoreleasing用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值