gpt4 book ai didi

iphone - @property 保留 - iPhone

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:14 26 4
gpt4 key购买 nike

我是 iPhone 编程的新手。我有以下疑问阻止我继续前进。请考虑以下代码:

---------.h------
@interface myClass: UIViewController
{
UIImage *temp;
}

@property (nonatomic, retain) UIImage *temp;

---------.m------
@interface myClass
@synthesize temp;

-(void) dealloc
{
[temp release];
[super dealloc];
}
  1. 以上是唯一的程序代码。就是这样......没有别的。我是否需要在 dealloc 方法中声明 [temp release] 即使我根本没有在我的程序中使用属性访问器方法。如果我不在 dealloc 中声明 [temp release] 怎么办。这会造成内存泄漏吗,因为我正在释放一些我没有保留的东西,因为我没有调用属性访问器方法。

  2. 此外,当我打印 temp 的保留计数时,为什么它显示为 0,即使它已保留在@property 中。

提前致谢

最佳答案

  1. 如果从未为 myClass.temp(的实例)分配任何值,则不会发生泄漏。但是您应该在 dealloc 中释放它。

  2. @property 只是声明 myClass 的实例将具有此属性。您需要在保留该值之前为其分配一个值。

    myClass *instance = [[myClass alloc] init];

    // instance will now retain the value passed in
    // and is therefore responsible for releasing it
    instance.temp = [UIImage imageNamed:@"whatever"];

    // if instance is not retained anywhere else,
    // its dealloc will be called
    [instance release];

在旁注中,你应该给你的类名以大写字母开头字母,即 MyClass。不是必需的,但可以使事情更清楚。

你也可以在你的 dealloc 中使用 self.temp = nil; 你有点不应该,但它工作得更好,看起来更干净。这是一个有点不确定的主题......

关于iphone - @property 保留 - iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com