2016-07-08 7 views
0

後でその関数を呼び出すためにクラスAからセレクタをクラスBに渡そうとしていますが、クラスBのセレクタを使用しようとすると、デバッガに表示されるのは、クラスBの文字列が存在しなくなることだけです。目的C:NSStringFromSelectorを別のオブジェクトに渡す

クラス

[classB save:@selector(otherMethodInClassA:) target:self] 

クラスB

@property(retain) (NSString*)mySelectorString 
@property(retain) (id)someObj 
-(void)save:(SEL)selector target:(id)obj 
{ 
    mySelectorString = NSStringFromSelector(selector); 
    //I've also tried the following 
    mySelectorString = [NSStringWithFormat @"%@", NSStringFromSelector(selector)]; 
    someObj = obj; 
} 
-(void)useSelector 
{ 
    [someObj performSelector:NSSelectorFromString(mySelectorString)]; //tells me its a bad exec 
} 
+0

使用値を渡すセグエの準備。 –

+2

サンプルセレクターは単一のパラメーターを取りますが、呼び出すときにはパラメーターを指定しません。セレクターの署名を再確認してください。 – Avi

+0

@balkaransingh私はココアを使用していますが、ココアは使用していません。この場合、準備がどのように機能するのかわからない – David

答えて

0

なぜあなただ​​けのブロックを使用していませんか?あなたのClassBので

@property (nonatomic, strong) void(^block)(void); 

- (void)registerCallbackBlock:(void(^)(void))block { 
    _block = block; 
} 

- (void)callBlock { 
    _block(); 
} 

あなたのクラスAでは:

- (void)someMethod { 
    [classB registerCallbackBlock:^{ 
     [classA someOtherMethod:args...]; 
    }]; 
} 
関連する問題