是不是正确的代码?

时间:2012-06-05 07:11:19

标签: iphone objective-c cocoa-touch

我是iPhone开发的新手。 这是我的代码:

- (void)setImage:(UIImage *)image ImageKey:(NSObject *)imageKey
{

    NSNumber *number=(NSNumber*)imageKey;
    int num=[number intValue];
        UIScrollView *scrollViewFamily=(UIScrollView*)[scrollViewProfile viewWithTag:6];
        UIButton *btnPhoto=(UIButton*)[scrollViewFamily viewWithTag:num];
        [btnPhoto setImage:image forState:UIControlStateNormal];

        Photo *aPhoto= [appData.CurrentUser.familyListarray objectAtIndex:num-1000];
        aPhoto.photoImg=image;
 }

scrollview retainCount为3,对于按钮2,aPhoto为1。 现在我的问题是编写是否正确?如果是,那么如何发布这些对象? 帮助我。谢谢你...

2 个答案:

答案 0 :(得分:1)

我的建议是给我们ARC,然后你不必担心内存管理。如果您仍想手动执行此操作,请参阅有关retainCount的建议straight from the docs

  

重要说明此方法在调试内存中通常没有任何价值   管理问题。因为任何数量的框架对象都可能有   保留一个对象,以便保持对它的引用,而在   同时自动释放池可能持有任何数量的延迟   在一个对象上发布,你不太可能获得有用的东西   来自此方法的信息。要理解的基本规则   您必须遵守的内存管理,请阅读“内存管理”   规则”。要诊断内存管理问题,请使用合适的工具:   LLVM / Clang静态分析器通常可以找到内存管理   甚至在你运行你的程序之前的问题。 Object Alloc仪器   在Instruments应用程序(参见仪器用户指南)中可以跟踪   对象分配和破坏。鲨鱼(参见Shark用户指南)也   配置内存分配(在你的许多其他方面)   程序)。

答案 1 :(得分:-4)

所有行都是指向内存资源的指针,因此没有内存泄漏。你必须在分配内存时释放内存,使用“自动释放”,它会让你的生活更轻松。