Ios 这是使用委托删除对象的正确方法吗?

Ios 这是使用委托删除对象的正确方法吗?,ios,delegates,Ios,Delegates,“Test”调用[delegate onSignal:nil],然后我们将杀死“Test”对象。“test”对象未到达onSignal函数的末尾。(是否有问题?) 和测试 @protocol TestDelegate <NSObject> -(void) onSignal:(id) sender; @end @interface Test : NSObject @property (nonatomic, assign) id<TestDelegate> delegate

“Test”调用[delegate onSignal:nil],然后我们将杀死“Test”对象。“test”对象未到达onSignal函数的末尾。(是否有问题?)

和测试

@protocol TestDelegate <NSObject>
-(void) onSignal:(id) sender;
@end

@interface Test : NSObject
@property (nonatomic, assign) id<TestDelegate> delegate;
-(void) signal:(id) sender;
@end

@implementation Test
@synthesize delegate;

- (id)init
{  
if (self = [super init]) 
{
    [self performSelector:@selector(signal:) withObject:nil afterDelay:5];
}

return self;
}

-(void) signal:(id) sender
{
 [delegate onSignal:nil];
}
@协议TestDelegate
-(void)onSignal:(id)发送方;
@结束
@接口测试:NSObject
@属性(非原子,赋值)id委托;
-(无效)信号:(id)发送方;
@结束
@实施测试
@综合代表;
-(id)init
{  
if(self=[super init])
{
[自执行选择器:@selector(信号:)with object:nil afterDelay:5];
}
回归自我;
}
-(无效)信号:(id)发送方
{
[代表签字:无];
}

似乎一切正常。委托属性是“assign”。是因为没有调用
onSignal:
,还是因为您获得了
EXC\u BAD\u访问权
@protocol TestDelegate <NSObject>
-(void) onSignal:(id) sender;
@end

@interface Test : NSObject
@property (nonatomic, assign) id<TestDelegate> delegate;
-(void) signal:(id) sender;
@end

@implementation Test
@synthesize delegate;

- (id)init
{  
if (self = [super init]) 
{
    [self performSelector:@selector(signal:) withObject:nil afterDelay:5];
}

return self;
}

-(void) signal:(id) sender
{
 [delegate onSignal:nil];
}