为什么Xcode的自动补全总是认为我的属性是int类型?

4

我已经看到这个问题已经有一年多了,但我无法确定它是一个错误还是我做错了什么。

当我在我的类中声明一个属性时,例如:

@property (nonatomic, retain) NSString *aString;

我要将这个应用到其他地方,例如:

myObject.aStr[ESC]

当下拉列表弹出所有建议时,aString始终是int类型。所有我的属性都是这样的。
我已经在不同的安装、不同的机器、版本或测试版上尝试过了。
其他人有看到这个问题吗?还是我漏掉了什么?

我只是想说我也看到了同样的情况。我认为这只是一种不会引起问题的错误,99%的时间里,我只需要编辑器能够准确地完成剩下的工作,并帮我省去自己查找的麻烦。现在想想,自动补全功能一直都有些问题,所以也许我已经习惯了,甚至都没有注意到它了。它很容易混淆(例如,在我的经验中,预处理宏几乎肯定会搞乱它)。 - johne
3个回答

3

这是Xcode 3.1.x中已知的一个bug。Snow Leopard版本的Xcode有许多自动补全行为的修复。


2

这可能是因为在某些情况下,C语言中未定义的类型会被视为int,而Xcode没有像Visual Studio为C#一样的后台编译器来支持其“智能感知”。

如果您在声明属性后立即编译项目,则Xcode应该可以看到正确的类型。


1
也许 XCode 察觉到你的数据不是字符串,而是指向字符串的指针。虽然没有理由让它认为这是 int 类型,但也许指针占用 4 个字节和 int 占用相同大小的内存导致了这种情况。进行构建可能会解决此问题。回到我的 Mac 后,我会更新进展。

跟进一下,我在Xcode中尝试了这个用例,没有遇到任何问题。 - TahoeWolverine

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