gpt4 book ai didi

ios - 在使用委托(delegate)的 ObjectiveC 中,如何在不使用 UIButton 的情况下发送消息?

转载 作者:行者123 更新时间:2023-11-29 00:17:24 25 4
gpt4 key购买 nike

我最近学会了使用委托(delegate)在按下按钮时将消息从一个类发送到另一个类,我想了解如何在没有按钮操作的情况下发送消息。 Apple documentation建议一个可能的方法是 performSelector:(SEL)aSelector; 但我在尝试使用它时运气不佳。相反,这就是我尝试过的。

MicroTune.h中,我定义了一个委托(delegate)并给它一个属性

    @class Synth;

@protocol TuningDelegate <NSObject>
-(void)setTuning:(NSData *)tuningData;
@end

@interface MicroTune : NSObject
{

}

@property (assign) id<TuningDelegate> delegate;
@end

Synth.h 中,我声明了该类,因此它充当委托(delegate)

    #import "MicroTune.h"

@interface Synth : NSObject <TuningDelegate>

Synth.m 中,我创建了一个方法让我知道消息已到达

    #import "Synth.h"

- (void)setTuning:(NSData *)tuningData
{
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:tuningData];
NSLog(@" hip hip %@", array);
}

编辑


并且,同样在 Synth.m 中,为了确保委托(delegate)被识别,我添加了以下内容

    - (id)initWithSampleRate:(float)sampleRate_ 
{ if ((self = [super init]))
{
microTuneClassObject.delegate = self;

// etc. etc.

} return self;
}
(Use of undeclared identifier 'microTuneClassObject')

也尝试过

    MicroTune.delegate = self;
(Property 'delegate' not found on object of type 'MicroTune')

    self.MicroTune.delegate = self;
(Property 'MicroTune' not found on object of type 'Synth *')

最后,在 MicroTune.m 中,我定义了一个发送消息的方法

    #import "MicroTune.h"

- (void)sendTuning:(NSData *)tuningData
{
[synthLock lock];
[self.delegate setTuning:(NSData *)tuningData];
[synthLock unlock];
}

但是 Xcode 给出了以下信息。

      No type or protocol named 'TuningDelegate'

有人可以解释一下我需要做什么才能发送消息吗?谢谢。


结论

解决方案可以在我的补充回答中找到。

最佳答案

MicroTune.h文件中,

@class Synth代替#import "Synth.h"

关于ios - 在使用委托(delegate)的 ObjectiveC 中,如何在不使用 UIButton 的情况下发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44969276/

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