0

いくつかの構成設定のためにプロトコルを設定しようとしましたが、デリゲートを自分自身に設定していないため、プロトコルが認識されていないことがわかりました。しかし、ここで私の質問が来ます.私はマネージャーとコンフィギュレーターの2つのクラスを持っています.

Manager クラスは、それ自体で定義されたプロトコルにメッセージを送信します。Configurator クラスは、プロトコルを採用して実装します。

マネージャー クラス:

@protocol ManagerDelegate <NSObject>

- (NSDictionary *)getString:(NSString *)type;
@end
@property (nonatomic, assign) id<ManagerDelegate> delegate;

-(void)someMethod{
 NSSting *test = [self.delegate getString:@"protocol"];

構成クラス:

 @interface Configurator : NSObject <ManagerDelegate>
 .....

そして.mファイルで

 - (NSDictionary *)getString:(NSString *)type{
    return type;}

Configurator クラスまたは Manager クラスをインスタンス化したくない、またはインスタンス化する必要はありませんか、それとも完全に必要ですか?

助けてくれてありがとう!

4

2 に答える 2

0

configクラスallocmanagerクラスである場合[self.manager setDelegate: self]、それ以外の場合、クラスはクラスがデリゲートであることmanagerを認識していません。 定義されたメソッドまたはプロトコルのいずれかを使用するには、両方のクラスをどこかでインスタンス化する必要があります。config

于 2013-01-04T05:55:53.947 に答える
0

ここでデリゲートを作成する必要はありません。 のサブクラスであるクラスの- (NSDictionary *)getString:(NSString *)typeメソッドです。Manager クラスに Configurator クラスのインスタンスを作成し、このインスタンスを使用して Configurator クラスのメソッドにアクセスできます。ConfiguratorNSObject

 -(void)someMethod{
Configurator *objConfigurator = [[Configurator alloc] init];//Or You can declare instance in Configurator.h.
 NSSting *test = [objConfigurator getString:@"protocol"];
}

お役に立てると思います。

于 2013-01-04T06:29:10.583 に答える