如果"@end"是头文件的最后一行,Xcode 4 的控制拖动无法创建第一个IBOutlet或IBAction。

5
我创建了一个Xcode 4.5.2项目,从iPhone模板的Single View Application开始。在MainStoryboard.storyboard中添加UIButton后,我能够从按钮到ViewController.h的代码进行控制拖动,以创建新的IBOutlet或IBAction。 with extra line 然而,如果我删除跟在@end之后的最后一行,即空的那一行,控制拖动就不会提供创建IBOutlet或IBAction的选项。 without extra line 如果我向ViewController添加属性,则控制拖动将再次提供创建IBOutlets和IBAction的选项。 existing property 编辑1: 正如jhilgert00所指出的那样,添加花括号,就像创建实例变量的地方一样,会导致Xcode再次提供创建IBOutlets和IBAction的选项。
这是一个Xcode的bug吗?还是我不应该删除@end之后的空行?

编辑2:此问题已在Xcode 5中修复。


我从来不知道可以这样做;我总是先在界面文件中创建我的 IBOutlet - Extra Savoir-Faire
这是一个很酷的功能,我也不知道。在我看来,它肯定是个 bug。文件末尾没有空行是完全有效的。 - mgr
遇到了同样的问题。这一定是一个bug,因为我只需删除和插入最后一个空行就能轻易地重现它。 - Entalpi
3个回答

6

我的答案是,这是一个应该在https://bugreport.apple.com上报告的错误,我怀疑这里没有人能给出有用的答案。话虽如此,在文件末尾留下空格总是一个好主意!


谢谢。我很高兴得到确认,问题不仅仅出现在我的设备上,希望其他人在遇到这个问题时能通过谷歌搜索到这个问题,而不是等待苹果修复。我会尽快向苹果提交一个错误报告。 - John Sauer
为什么您会建议在文件末尾保留空格? - John Sauer
这里有一个关于它的好讨论。简而言之:一些程序在解析最后一个字符不是换行符的文件时会出现问题,更不用说C标准规定了这种情况应该发生。 - rpowell

4

看起来很傻,但是为你的@interface打开和关闭花括号似乎可以解决这个问题。

#import <UIKit/UIKit.h>

@interface ViewController : View Controller {

// Drag your IBOutlets here...

}

@end

这个答案中的截图。


True。添加花括号,就像创建实例变量的地方一样,会导致Xcode再次提供创建IBOutlets和IBActions的选项。然而,我的问题不是“我该如何解决这个问题?”,而是“Xcode是否应该首先这样做?”。其他人似乎也认为这是一个Xcode的bug,所以我很快就会将其提交给苹果公司。 - John Sauer

0

顺便说一下,这种情况发生在我身上是因为我没有将我的ViewController从通用的更改为我试图拖动到的那个,这是有道理的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接