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

你的呢?


当前回答

我最喜欢的是这些常用的编辑器快捷方式:

⌘+ 0将您从调试模式返回到编辑器。 ⌘+ Shift + R带您从调试模式到编辑器视图(项目模式) ⌘+ Shift + E“最大化”编辑器(当你有构建结果等显示在编辑器上方时,这非常有用,你只是想让你的源编辑器更高) Ctrl + 2显示当前代码的大纲 ⌘+ Return运行应用程序 ⌘+ Shift + Return结束应用程序

其他回答

构建成功/失败噪音;从术语:

defaults write com.apple.Xcode PBXBuildSuccessSound ~/Library/Sounds/metal\ stamp.wav
defaults write com.apple.Xcode PBXBuildFailureSound ~/Library/Sounds/Elephant

我已经为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项目模板。

链接一个新的框架

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

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

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

用alt-向前或向后移动一个完整的单词。使用cmd-alt-向前或向后移动历史记录中的文件。使用cmd-alt-在接口和实现之间切换。

用cmd-=跳转到构建错误列表中的下一个错误。使用cmd-shift-f显示多个Find面板。使用cmd-shift-e切换完整的编辑器可见性。

使用cmd-0跳转到项目选项卡,使用cmd-shift-b跳转到构建选项卡,使用cmd-shift-y跳转到调试选项卡(与操作的关键命令相同,添加了shift)。

能够快速查看可以从超类中重写的所有方法。例如,当扩展UITableViewController时,我只需要输入我的实现:

- ta

然后我按ESC键,看到我的超类中所有以“ta”开头的方法,比如

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

这也适用于采用协议。