gpt4 book ai didi

ios - NSNotificationCenter 多次调用

转载 作者:可可西里 更新时间:2023-11-01 03:32:55 25 4
gpt4 key购买 nike

我在我的应用程序中实现了 NSNotificationCenter。图像解码完成后,我会发送通知。第一次图像解码将完成 8 次。所以通知应该发送 8 次。但它正在调用 64 次(8 * 8)。

这是我的代码是如何实现的--> //初始化

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(getHRImage:)
name:@"DecodeComplete" object:nil];}

//调用方法

 -(void)getHRImage:(NSNotification *) notification
{

if ([[notification name] isEqualToString:@"DecodeComplete"])
NSLog (@"Successfully received the DecodeComplete notification! ");
}`

//释放

- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"DecodeComplete" object:self];
//[super dealloc];
}

//发布通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"DecodeComplete" object:self];

有人可以建议我哪里做错了。

提前致谢。

//调用方法是这样的(调用8次)

-(void)decode
{
NSLog(@"---------- Decoding is Complete ---------");
[[NSNotificationCenter defaultCenter] postNotificationName:@"MdjDecodeComplete" object:self];

}

最佳答案

解决方案:我重新检查了我的代码,initWithFrame:(CGRect)frame 调用了 8 次并添加了 NSNotification 观察器 8 次。

所以我已经像这样更改了我的代码,--->> 初始化。

static bool note=YES;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
if(note)
[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(getHRImage:)
name:@"DecodeComplete" object:nil]; note=NO;}

--->> 解除分配

- (void) dealloc
{
note=true;

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"DecodeComplete" object:nil];
//[super dealloc];
}

现在 addObserver 方法只调用一次,所以我的问题已解决。感谢大家的宝贵指导。

关于ios - NSNotificationCenter 多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743884/

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