0

ARC Issue解析するのにかなり苦労しているXCodeラベルを取得しています。私はこのクラスを持っています:

typedef void (^sig_cb_t)(NSString *parm);

@protocol Signaleer
// <snip>
-(void) connect:(NSString *) verb
          parm:(NSString*) param
      callback:(sig_cb_t)callback;
@end

// In another header:
@interface Switchboard : NSObject <Signaleer> {
   @private
   NSMutableDictionary *bus;
}

// In init: method:
bus = [[NSMutableDictionary alloc] init];

// actual implementation:
-(void) connect: (NSString *)verb
           parm:(NSString*)parm
       callback:(sig_cb_t)callback {
  NSMutableArray *callbacks = [self.bus objectForKey:verb];
  NSArray *signal = [NSArray arrayWithObjects:callback, parm, nil];
  if (callbacks == nil) {
    NSArray *initial = [NSArray arrayWithObjects:signal, verb, nil];
    [bus setObject: initial, forKey:verb];
  } else {
    [callbacks addObject:signal];
  }
}

この行[bus setObject: initial, verb]はエラーになりますNo visible @interface for 'NSMutableDictionary' declares the selector 'setObject:'。これを説明できる人はいますか?

4

3 に答える 3

1

私はあなたがここで次の行を参照していると仮定します:

[bus setObject: initial, forKey:verb];

[bus setObject: initial, verb](あなたは私が間違いだと思うあなたの質問の最後の行に書きます)

両方の行にコンマがありますが、これはあってはなりません。

于 2012-05-29T14:09:39.303 に答える
0

の後にコンマがありますinitial。そのはず:

    [bus setObject:initial forKey:verb];
于 2012-05-29T14:09:40.200 に答える
0

そのメソッド呼び出しからコンマを削除すると、エラーは発生しなくなります。Objective-Cで通常のパラメータリストを区切るためにカンマは必要ありません

[bus setObject:initial forKey:verb];
于 2012-05-29T14:09:49.833 に答える