gpt4 book ai didi

iphone - iOS - 管理 IBOutlets 内存的最佳方式是什么?

转载 作者:技术小花猫 更新时间:2023-10-29 11:03:45 24 4
gpt4 key购买 nike

我一直在查看 Apple 文档和示例代码,以尝试确定管理 IBOutlet 内存的最佳方式。至少可以说,我有点困惑。

CurrentAddress 示例代码将 IBOutlets 声明为属性:

@interface MapViewController : UIViewController <MKMapViewDelegate, MKReverseGeocoderDelegate>

{
MKMapView *mapView;
UIBarButtonItem *getAddressButton;
}
@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *getAddressButton;

太棒了。而这些都是在dealloc中释放的:

- (void)dealloc
{
[mapView release];
[getAddressButton release];
[super dealloc];
}

现在不应该把这些属性设置成assign吗?因为当设置为保留时,IBOutlet 的保留计数会增加两次:一次是在加载 nib 时,另一次是在设置属性时?将这些属性设置为 nil 而不是在 dealloc 中释放不是更好吗?

最佳答案

Apple 文档说我们应该保留 iOS 的属性。
保留的 socket 应该在 deallocviewDidUnload 中被释放和 nil

在 Mac 上,每个未被 super View 保留的 socket 在加载 Nib 时会自动保留。 iOS 不是这种情况。这就是为什么在 View 层次结构中仅保留 View 以外的导出在理论上是有效的。

Jeff LaMarche 就此主题发表了一篇非常有用的帖子:Outlets, Cocoa vs. Cocoa Touch .

关于iphone - iOS - 管理 IBOutlets 内存的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232973/

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