解决方案 »

  1.   

    恩,内存警告和这里没有问题,内存警告主要因为释放内存较慢,所有我想在ARC模式下使用什么方法可以自己手动释放内存,所以问一下大家是不是在-(void)delloc;下边实现内存释放的
    -(void)delloc
    {
          self.button = nil;
          self.label = nil;
    }
      

  2.   

    self.button = nil  这时的对象指向的是一个空指针,ARC会认为这时的对象没有被其它的对象引用,会把它加入到待清理的队列中去。你这里的内存问题也有可能是由其它的方面导致。可以借助工具来帮你分析内存哪个地方出了问题,对于运行时导致的内存泄露你可以使用Instruments 工具来帮你分析。
      

  3.   

    我采用ARC方式,如果我退出一个页面之时我可以将这个self.button = nil;  self.label = nil;放在-(void)delloc里边吗,我在网上边看的是ARC模式下边-(void)delloc中放delegate管用,其他的东西不管用,能帮我解答一下疑点吗
      

  4.   

    同问,ARC下不能手动release   每次有些类似Dictionary   array  Nsstring 等等这类东西不用的时候   都是手动复制nil   感觉怪怪的
      

  5.   

    不要使用self.  用_    你使用self.   引用计数不增加吗?
      

  6.   

    tableView.delegate = nil  写代理有用 其他没用的
      

  7.   


    这位兄台说的好。
    看来楼主对点语法 不了解,没有亲自写过MRC下的get 方法和set方法,写过的人都不会在dealloc里面用.语法
      

  8.   


    没用过ARC的飘过...
    哥是从C转过来滴,习惯了有自己alloc就自己release
    弱滴问一下:
    在ARC的一段函数里面,alloc的东西,不用了,是不是一定要设置为nil-(void)func {
        NSxxx* p = [[NSxxx alloc] init];
        //... ....做了一些活动后
        p = nil; //这里是不是一定要设置?如果不设置,是不是内存就泄漏了?
    }
    还有在ARC的init函数里,alloc的或者IBOutlet的东西,是不是,也一定要在dealloc里设为nil?-(id)init {
        self = [super init];
        self.p = [[NSxxx alloc] init];
        return self;
    }-(void)dealloc {
        //这里p和btn是不是都得设为nil..
        //假设btn为IBOutlet指定的....
        self.p = nil;
        self.btn = nil;
    }
      

  9.   

    我是从java / android转过来的,我从来就没做手动释放内存,貌似程序同样很流畅
    在我们的项目中也没出现过-(void)dealloc {
        //这里p和btn是不是都得设为nil..
        //假设btn为IBOutlet指定的....
        self.p = nil;
        self.btn = nil;
    }这种代码
    因为你知道的,java语言有gc的功能,程序员不需要关心内存
    如果现在开发ios要手写一堆释放内存的代码,估计我接受不了
      

  10.   


    这位兄台说的好。
    看来楼主对点语法 不了解,没有亲自写过MRC下的get 方法和set方法,写过的人都不会在dealloc里面用.语法
    为什么不能写.语法呢?能不能给个具体点的答案,我一直用arc的。
      

  11.   

    大部分的人就是参考官方文档说的一句话:Don’t Use Accessor Methods in Initializer Methods and dealloc  
    然后就说:self都还不知道,所以不能用self.  ...直接全局调用更好。是这样吗?扯淡的吧?self如果没有的话。self init 不是白写了?dealloc 如果self没有了,那么就是奔溃了。没有逻辑的说法。
      

  12.   


    这位兄台说的好。
    看来楼主对点语法 不了解,没有亲自写过MRC下的get 方法和set方法,写过的人都不会在dealloc里面用.语法
    为什么不能写.语法呢?能不能给个具体点的答案,我一直用arc的。
    只因为点语法里面不是直接赋值的,而是有很多条判断,引用计数之类的。并且点语法作为一个方法,而不是一条赋值语句,不太适合在那里写,当然并不是说不能用点语法在那里。你可以学习一下,mrc下,get方法和set方法的写法你就知道了。