Ios 这是使用委托删除对象的正确方法吗?
“Test”调用[delegate onSignal:nil],然后我们将杀死“Test”对象。“test”对象未到达onSignal函数的末尾。(是否有问题?) 和测试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
@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];
}