0

2 つの UIViewControllers(A,B) があります。A が B の代理人として設定され、B が表示されます。プロトコルは B のヘッダーに設定されます。

@protocol BDelegate <NSObject>
- (IBAction)finishOrder:(id)sender;

@end

デリゲート プロパティが宣言されています。

@property (nonatomic, assign) id<BDelegate> delegate;

A は B.delegate = self を設定します。次に、ボタンを押すと B が呼び出されます。

if (self.delegate) {
        [self.delegate finishOrder:nil];
    }

ただし、最初の実行でlldbは私に与えます:

-[UITextInteractionAssistant finishOrder:]: unrecognized selector sent to instance

2 回目の実行:

-[NSInvocation delegate]: unrecognized selector sent to instance

3 回目の実行:

-[__NSCFDictionary delegate]: unrecognized selector sent to instance

4 回目の実行:

-[UITextTapRecognizer finishOrder:]: unrecognized selector sent to instance

だから...コードは変更されていませんが、自己はAからNSInvocationと__NSCFDictionaryに変更され、Bのデリゲート(Aの自己)はUITextInteractionAssistantとUITextTapRecognizerに変更されました...そのようなものは見たことがありません. 何か案は?ありがとう!

4

1 に答える 1

0

あなたはどこかで過剰に解放しています。Zombies をオンにして、Instruments を使用してオーバーリリースを追跡してみてください。

于 2012-06-18T21:00:31.150 に答える