1

我将委托广泛用于 VIEW - CONTROL - MODEL 结构。通常,在应用程序运行期间会保留 CONTROL 和 MODEL 对象,不会引起什么问题。

但是,通常是 的实例的 VIEW 对象被UIViewController多次分配和释放。

设置nil为分配有动态UIViewController实例的委托对象,当它被释放时,是我知道如何避免 EXC_BAD_ACCESS 错误的一种方法。

但是,即使我总是使用:

if ([delegate respondsToSelector:@selector(communityModel:finishedDeletingComment:)]) {
    [delegate communityModel:self finishedDeletingComment:succeeded];
}

它对于防止错误并不完美。如果不同的 VIEW 对象共享一个或有限数量的 CONTROL 对象的委托,则总是容易导致委托被另一个无意替换,从而导致 EXC_BAD_ACCESS

有没有更好的方法来管理委托,在调用委托方法时知道它是否真的可用?

我怀疑是否应该更改我通常为委托设置属性的方式。我使用这种方式来设置委托的属性:

@property (nonatomic, assign) id<ControlDelegate> delegate;

我是否会怀疑属性设置是否正确?

4

1 回答 1

0

assign当我的对象(将使用委托)是委托的成员或委托的成员等时,我将委托声明为属性。在这种情况下retain,属性将导致内存泄漏。在其他地方,我看不到不保留代表的原因。如果您可以接受 - 尝试将您的财产声明为:

@property (nonatomic, retain) id<ControlDelegate> delegate;
于 2011-05-06T08:45:29.607 回答