【问题标题】:Passing an instance of an object to a method将对象的实例传递给方法
【发布时间】:2011-10-09 06:12:09
【问题描述】:

我有这个方法:

- (void)postDictionary:(NSDictionary *)dictionary toURL:(NSURL *)url forDelegate:(id)delegate withIdentifier:(NSString *)identifier;

我想将一个对象的实例传递给这个方法,然后调用类似的东西:

if ([delegate respondsToSelector:@selector(didFinishDownload:)]) {
    [delegate performSelector:@selector(didFinishDownload:) withObject:@"test"];
}

我想我必须将对象的指针传递给方法?

我想我必须使用 *、** 和 &。但我不知道我必须在哪里使用这些。

你能帮帮我吗?

侧滑

【问题讨论】:

  • 这个问题可以删除。非常抱歉,我只是使用了错误的对象,所以没有调用选择器。

标签: iphone objective-c object methods arguments


【解决方案1】:

我猜- (void)postDictionary:(NSDictionary *)dictionary toURL:(NSURL *)url forDelegate:(id)delegate withIdentifier:(NSString *)identifier;是你声明的方法。

你可以拥有

- (void)postDictionary:(NSDictionary *)dictionary toURL:(NSURL *)url forDelegate:(id)delegate withIdentifier:(NSString *)identifier withObject:(id)obj;

【讨论】:

  • oO sry 我想我不清楚我想要什么。我声明'- (void)postDictionary:(NSDictionary *)dictionary toURL:(NSURL *)url forDelegate:(id)delegate withIdentifier:(NSString *)identifier;'委托应是我传递的对象的实例。但我可以这样称呼它吗?我不必使用指针和类似的东西来调用传递的“委托”的方法吗?
  • 不,实际上对象的实例本身就是一个指针。您可以直接发送该实例。
【解决方案2】:

为什么你不能轻易做例子

if ([delegate respondsToSelector:@selector(didFinishDownload:)]) {
    [delegate performSelector:@selector(didFinishDownload:) withObject:identifier];
}

为什么说需要做一种指针操作呢?

【讨论】:

    【解决方案3】:

    您会发现Objective C 中的所有对象都由指针引用。所以当你声明一个 NSString 时,你会做这样的事情:

    NSString *myString = @"testString";
    

    以同样的方式执行 alloc init 创建一个新对象返回一个指针。您可以直接将指针传递给方法。

    if ([delegate respondsToSelector:@selector(didFinishDownload:)]) {
    [delegate performSelector:@selector(didFinishDownload:) withObject:myString];
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2011-09-27
      • 2014-12-01
      相关资源
      最近更新 更多