随着大量的Xcode新手的涌入,我相信会有很多Xcode的技巧和技巧可以分享。

你的呢?


当前回答

要默认在弹出式菜单中显示当前的自动完成选项(无需先按ESC),请键入

defaults write com.apple.Xcode XCCodeSenseAutoSuggestionStyle List

然后重新启动Xcode。

其他回答

⌘'来正确格式化(重新缩进)您的代码

编辑:显然重缩进功能(编辑>格式>重缩进)没有默认的快捷方式。我想我很久以前就分配了一个(在Preferences > Key bindings中),甚至不记得了。抱歉误导你了。

我刚刚发现了如何改变文本宏中使用的缩进行为:

例如,如果你和我一样,不喜欢这个:

if (cond) {
  code;
}

但我更喜欢这样:

if (cond)
{
  code;
}

然后你可以通过在终端中设置以下默认值来全局(所有语言)更改此设置:

defaults write com.apple.Xcode XCCodeSenseFormattingOptions -dict-add BlockSeparator "\n"

这个问题已经困扰我很多年了,我希望其他人也会感兴趣。

这个特性的文档可以在Xcode用户默认参考中找到

重命名多个项目共享的文件:

打开所有项目。 重命名一个项目中的文件。 Xcode自动调整所有打开的项目,以反映文件的新名称。

链接一个新的框架

(在Groups and Files窗格中,打开Targets披露三角形以显示与项目相关的目标。)

在Groups and Files窗格中,双击当前项目目标以显示target Info面板。 在Info面板中,选择General选项卡。下方窗格显示当前链接的框架。 通过按面板左下角的+按钮,并从出现的工作表中显示的列表中选择,添加一个新框架。(重要的是,表格中的列表只显示了与目标相关的框架…)

(这在两年前是不可用的,但是值得指出的是,比起在文件系统中找到框架并将其拖放到项目中,它可以节省大量的时间……)

我已经为NSObject, UIView和UIViewController创建了自己的文件模板,所以当我创建新类时,这些文件都设置了私有部分,并在init和dealloc中记录类的地址。

示例(命名为'test'的NSObject派生类将像这样开始):

//=====================================================
// Private Interface
//=====================================================

@interface test (private)
@end

//=====================================================
// Public Implementation
//=====================================================

@implementation test

- (void)dealloc {
    NSLog(@">>> Dealloc: test [0x%X]", self);
    [super dealloc];
    NSLog(@"<<< Dealloc: test");
}

- (id) init
{
    self = [super init];
    if(self) {
        NSLog(@">>> Alloc: test [0x%X]", self);
    }
    return self;
}

@end

//=====================================================
// Private Implementation
//=====================================================

@implementation test (private)
@end

这方面有很多可用的资源,例如Cocoa dev:设计自己的Xcode项目模板。