【问题标题】:Iphone Error "request for member connectWeb in something not a structure or union"Iphone 错误“请求成员 connectWeb 不是结构或联合”
【发布时间】:2011-06-23 22:26:53
【问题描述】:

当我从我的 (IBAction)buttonpressed 方法中调用我的 urlconnection 方法时:

[自连接网络];

我收到错误“在非结构或联合的情况下请求成员 connectWeb”

但是当我从我的 - (void)viewDidLoad 方法调用相同的方法时,它可以工作!?

【问题讨论】:

  • 尝试将'connectWeb'方法添加到头文件中。

标签: iphone objective-c ios4


【解决方案1】:

您的实现文件中的connectWeb 方法在哪里?

我猜它在viewDidLoad 之前但在buttonPressed 之后。

原因是connectWeb方法在viewDidLoad之前声明,所以viewDidLoad知道它,而它在buttonPressed方法之后,所以buttonPressed方法不知道。

你有几个选择。

  1. 在任何其他方法使用该方法之前声明该方法。

- (void)connectWeb;

然后你可以在实现中的任何地方实现它。

  1. connectWeb 的实现移到 viewDidLoadbuttonPressed 之前 - 这两种方法都会知道 connectWeb

【讨论】:

  • 我不知道顺序在 Obj-C 中很重要!这很奇怪
  • 在编译语言中并不奇怪。当编译器编译 buttonPressed 方法时,它不知道 connectWeb 因为它还没有被“告知”它。在 buttonPressed 之前前向声明或实现 connectWeb,然后编译器知道该方法存在。
【解决方案2】:

标头中缺少的方法不会导致此问题。由于 Objective-C 是动态的,它会在运行时检查实例是否实现了该方法,因此只要该方法存在,它就可以工作。您只会在构建时收到编译器警告。

尝试从您的按钮委托方法中删除 [self connectWeb] 行,然后从您的 viewDidLoad 中复制/粘贴它(或重新输入)。根据您收到的错误,听起来您的陈述中可能有一个额外的字符。这种情况时常发生在我身上,因为我使用 synergy 在多台计算机之间共享我的键盘和鼠标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多