假设我有一个ClassA类

标头:

@interface ClassA : NSObject
- (id)initWithDelegate:(id)delegate;
@end


实施:

@interface ClassA ()
{
    NSObject *_delegate;
}
@end

@implementation
- (id)initWithDelegate:(id)delegate
{
    self = [super init];
    if( self )
    {
        _delegate = delegate;
    }

    return self;
}
@end


由于我跳过了@property定义,因此我的委托声明默认为强?所以这段代码是错误的,因为它将导致泄漏,或者我的滞后声明默认为弱?

最佳答案

您必须将该ivar限定为__weak。 ivar的默认值为强。

否则,正如您已经知道的那样,您可能要冒与代表进行保留的风险。

顺便说一句,这里的约定是'id'而不是NSObject *。

10-08 09:10
查看更多