Xcode编辑器默认为 - (void)而不是 - (voidPtr)?

时间:2009-09-27 18:43:30

标签: objective-c xcode

当我开始输入诸如

之类的功能时,在Xcode(Snow Leopard上的3.2)中
-(void)myFunctionName {

}

当我第一次开始输入时,代码提示是

-(voidPtr
  1. voidvoidPtr之间有什么区别?我假设voidPtr是某种指针,在什么情况下要求使用它?我是否要使用voidPtr代替void

  2. 我可以在编辑器中更改默认为void的偏好设置,然后如果需要,我可以输入P并将标签完整设置为voidPtr吗?

  3. 是否有通用的方法来配置或优先处理代码提示,以便在更加模糊的代码提示之前显示常见提示?

  4. 我可以创建代码提示快捷方式吗?我在哪里输入几个字符和一个扩展常见样板代码的命令?

  5. 有哪些推荐的练习教程可以提高Xcode编辑的效率?

  6. 更新:根据Darren的建议,看起来像voidPtr来自

    CarbonCore/Threads.h
    
    ...
    
    /*
        The following ProcPtrs cannot be interchanged with UniversalProcPtrs because
        of differences between 680x0 and PowerPC runtime architectures with regard to
        the implementation of the Thread Manager.
     */
    typedef void *                          voidPtr;
    

    我正在使用Snow Leopard的新香草安装上运行Xcode。我没有对我的项目做过任何异国情调。刚刚开始一些关于Xcode和Objective C的非常基础的教程。任何有经验的Objective C人都有这方面有用的背景信息吗?

2 个答案:

答案 0 :(得分:2)

更新 旧版Xcode中的错误。 Bug#7256749已修复。我刚尝试使用最新版本的Xcode,一切都是玫瑰。

历史信息(适用于Xcode 4.0发布之前的Xcode版本)

如果您开始输入C风格的函数声明:

void SomeFunc(...

然后“void”将作为第一个建议出现。 Xcode的代码意义根据周围的语法应用不同的规则,当您创建Objective-C函数声明时,它似乎排除了所有内置类型,包括void

我已经向Apple提交了一个错误(通过bugreport.apple.com),我建议您也这样做。 Apple根据他们针对特定问题查看的重复报告的数量,优先考虑他们的软件修复程序(至少部分)。

注意:以下是提交给Apple的错误报告的全文:

  

要点:
  Xcode的代码检测在您键入时提供建议匹配的列表。根据上下文过滤此列表。键入Objective-C方法声明时,会过滤掉内置类型(void,int,float等)。为了鼓励使用NSInteger或NSNumber,可能会故意丢失int和float等数字类型,但仍然会一直使用void类型,并且应该真正出现在建议列表中。

     

重现步骤:
  1.打开Xcode
  2.使用Cocoa Application模板创建一个新项目   3.打开应用程序委托头文件
  4.开始创建一个带有void返回类型的方法声明:
   - (vo
  5.按“转义”以显示建议完成的完整列表

     

预期结果:
  我希望在建议列表的顶层看到“无效”,我希望它会被突出显示为最可能的选择。

     

实际结果:
  该列表甚至不包含“void”,所选的候选者是“voidPtr”,它在CarbonCore / Threads.h中声明

     

回归:
  未知,但它确实发生在Mac OS X10.6上最新版本的Xcode(3.2(1610))

     

注意:
  请参阅StackOverflow.com(Xcode editor default to -(void) instead of -(voidPtr)?

上的讨论

答案 1 :(得分:1)

voidPtr不是标准的Objective-C或Cocoa类型。 XCode可能会呈现voidPtr,因为它在项目的某处找到了符号。

您可以从菜单中选择“文件>快速打开”(⌘⇧D),然后输入voidPtr以查看该符号的定义位置。您也可以通过按住Command键并双击源代码中的符号来执行相同的操作。