working on it ...

Filters

Explore Public Snippets

Sort by

Found 1,653 snippets matching: xcode

    public by micheleaiello modified Jan 26, 2014  263111  0  6  1

    Mark methods as deprecated

    Mark a method (or a whole class) as deprecated. Works in Xcode v4.2 and higher.
    __attribute((deprecated("Use xxx: instead")))
    
    examples:
    
    @interface MyClass : NSObject
      - (void)myOldMethod:(id)param __attribute__((deprecated));
    @end
    
    __attribute__((deprecated))
    @interface MyOldClass : NSObject
    @end
    
    __attribute__((deprecated))
    void myOldFunction(...) {
    }

    public by marksimon232 modified Jun 4, 2014  4330  0  6  2

    Xcode 6 - Language options to create the project using swift ios 8 application development? Default Objective C?

    I heard lot of questions asking From xcode 6, when using the menu File -> new -> project -> application
    , it always creates the project using objective C.  what is the option to create the project using swift?
    
    This is the answer of your question:
    
    There is an option to change the language 
    to Swift. It’s on the next page after you select your project type. 
    
    See the snap here:
    http://tinypic.com/r/2pzbtrb/8
    
    Read more:
    http://www.agileinfoways.com/technical-expertise/mobile-applications-development/iphone/
    

    public by mirage3d modified Jun 28, 2015  4204  0  6  0

    Custom SpriteKit Scene in Swift - Xcode

    A bare-bones custom SpriteKit scene snippet in Swift for Xcode with placeholder tokens
    // XCode bare-bones custom SpriteKit scene snippet
    
    import SpriteKit
    
    class <#Custom#>Scene: SKScene {
    	// MARK: - Properties
    	// use optionals or initialised values to avoid having to write
    	// custom init()'s and the required required init?(coder aDecoder: NSCoder)
    	var <#property1#>: Int!
    	var <#property2#>: CGPoint!
    	let <#property3#> = 3.1415962
    	var <#button1#>: SKSpriteNode!
    	var <#sprite#1>: SKSpriteNode!
    	var <#helperNode#>: SKSNode!
    
    	// MARK: - Methods
    	override func didMoveToView(view: SKView) {
    		<#code#>	
    	}
    
    	override func willMoveFromView(view: SKView) {
    		<#code#>	
    	}
    
    	override func update(currentTime: NSTimeInterval) {
    		<#code#>	
    	}
    
    	// MARK: - <#Other Methods#>
    }
                

    public by alesanro modified Dec 4, 2014  1785  0  4  0

    Supress some warnings of clang/llvm in XCode

    Supress some warnings of clang/llvm in XCode: SupressWarning.m
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-W-flag"
    
    #pragma clang diagnostic pop
    
    

    public by mralexgray modified May 21, 2014  1709  0  3  0

    xcodebuild oclint script phase

    xcodebuild oclint script phase: xclint.sh
    if [ "${RUN_OCLINT}" -eq "No" ]; { echo "OCLINT cancelled because of explicit Xcode build setting"; exit 0; }
    
    OCLINT=$(which oclint)
    
    hash $OCLINT &> /dev/null
    if [ $? -eq 1 ]; then
        echo >&2 "oclint not found, analyzing stopped"
        exit 1
    fi
    
    cd ${TARGET_TEMP_DIR}
    
    if [ ! -f compile_commands.json ]; then
        echo "[*] compile_commands.json not found, possibly clean was performed"
        echo "[*] starting xcodebuild to rebuild the project.."
        # clean previous output
        [[ -f xcodebuild.log ]] && rm xcodebuild.log
    
        cd "${SRCROOT}"
        xcodebuild clean
        #build xcodebuild.log
        xcodebuild | tee ${TARGET_TEMP_DIR}/xcodebuild.log
    
        echo "[*] transforming xcodebuild.log into compile_commands.json..."
        cd ${TARGET_TEMP_DIR}
        #transform it into compile_commands.json
        oclint-xcodebuild
    fi
    
    #if [-d report.html]; { rm report.html; }
    
    #run static analyzer
    #oclint-json-compilation-database -- -o=./report.html -html
    
    echo "[*] starting analyzing"
    cd ${TARGET_TEMP_DIR}
    oclint-json-compilation-database | sed 's/\(.*\.\m\{1,2\}:[0-9]*:[0-9]*:\)/\1 warning:/'
    
    
    
    

    external by alexandreraulin modified Aug 6, 2014  270831  96  5  1

    Script for iOS Universal Framework compilation with Xcode 6

    Script for iOS Universal Framework compilation with Xcode 6: gistfile1.sh
    # This script is based on Jacob Van Order's answer on apple dev forums https://devforums.apple.com/message/971277
    # See also http://spin.atomicobject.com/2011/12/13/building-a-universal-framework-for-ios/ for the start
    
    
    # To get this to work with a Xcode 6 Cocoa Touch Framework, create Framework
    # Then create a new Aggregate Target. Throw this script into a Build Script Phrase on the Aggregate
    
    
    ######################
    # Options
    ######################
    
    REVEAL_ARCHIVE_IN_FINDER=true
    
    FRAMEWORK_NAME="${PROJECT_NAME}"
    
    SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework"
    
    DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework"
    
    UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal"
    
    FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework"
    
    
    ######################
    # Build Frameworks 
    ######################
    
    xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator | echo
    
    xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphoneos -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos | echo
    
    #xcodebuild -target ${PROJECT_NAME} ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" | echo
    
    #xcodebuild -target ${PROJECT_NAME} ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" | echo
    
    
    ######################
    # Create directory for universal
    ######################
    
    rm -rf "${UNIVERSAL_LIBRARY_DIR}"
    
    mkdir "${UNIVERSAL_LIBRARY_DIR}"
    
    mkdir "${FRAMEWORK}"
    
    
    ######################
    # Copy files Framework
    ######################
    
    cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}"
    
    
    ######################
    # Make fat universal binary
    ######################
    
    lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}" "${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output "${FRAMEWORK}/${FRAMEWORK_NAME}" | echo
    
    
    ######################
    # On Release, copy the result to desktop folder
    ######################
    
    if [ "${CONFIGURATION}" == "Release" ]; then
        mkdir "${HOME}/Desktop/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/"
        cp -r "${FRAMEWORK}" "${HOME}/Desktop/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/"
    fi
    
    
    ######################
    # If needed, open the Framework folder
    ######################
    
    if [ ${REVEAL_ARCHIVE_IN_FINDER} = true ]; then
        if [ "${CONFIGURATION}" == "Release" ]; then
            open "${HOME}/Desktop/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/"
        else
            open "${UNIVERSAL_LIBRARY_DIR}/"
        fi
    fi
    
    
    

    external by Nikolay Kasyanov modified Nov 27, 2016  105  0  2  0

    __auto_type autocompletion snippet for Xcode 8+. Just put it in ~/Library/Developer/Xcode/UserData/CodeSnippets/ and then start typing aut... in Xcode.

    __auto_type autocompletion snippet for Xcode 8+. Just put it in ~/Library/Developer/Xcode/UserData/CodeSnippets/ and then start typing aut... in Xcode.: C138FB1B-8C83-477C-B33C-05551516167A.codesnippet
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>IDECodeSnippetCompletionPrefix</key>
    	<string>auto</string>
    	<key>IDECodeSnippetCompletionScopes</key>
    	<array>
    		<string>CodeBlock</string>
    	</array>
    	<key>IDECodeSnippetContents</key>
    	<string>__auto_type &lt;#name#&gt; = &lt;#value#&gt;;</string>
    	<key>IDECodeSnippetIdentifier</key>
    	<string>C138FB1B-8C83-477C-B33C-05551516167A</string>
    	<key>IDECodeSnippetLanguage</key>
    	<string>Xcode.SourceCodeLanguage.Objective-C</string>
    	<key>IDECodeSnippetTitle</key>
    	<string>__auto_type</string>
    	<key>IDECodeSnippetUserSnippet</key>
    	<true/>
    	<key>IDECodeSnippetVersion</key>
    	<integer>0</integer>
    </dict>
    </plist>
    
    
    

    external by Michael Ohlssen modified Sep 5, 2015  332  0  3  0

    Convert iTerm2 color scheme to Terminal.app color scheme. To use, just save to disk and run it like you would any script. NOTE: Needs Xcode 6.1 installed.

    Convert iTerm2 color scheme to Terminal.app color scheme. To use, just save to disk and run it like you would any script. NOTE: Needs Xcode 6.1 installed.: iTermColorsToTerminalColors.swift
    #!/usr/bin/xcrun swift
    
    import AppKit
    
    enum iTermColors: String {
      case Ansi0 = "Ansi 0 Color"
      case Ansi1 = "Ansi 1 Color"
      case Ansi2 = "Ansi 2 Color"
      case Ansi3 = "Ansi 3 Color"
      case Ansi4 = "Ansi 4 Color"
      case Ansi5 = "Ansi 5 Color"
      case Ansi6 = "Ansi 6 Color"
      case Ansi7 = "Ansi 7 Color"
      case Ansi8 = "Ansi 8 Color"
      case Ansi9 = "Ansi 9 Color"
      case Ansi10 = "Ansi 10 Color"
      case Ansi11 = "Ansi 11 Color"
      case Ansi12 = "Ansi 12 Color"
      case Ansi13 = "Ansi 13 Color"
      case Ansi14 = "Ansi 14 Color"
      case Ansi15 = "Ansi 15 Color"
      case CursorText = "Cursor Text Color"
      case SelectedText = "Selected Text Color"
      case Foreground = "Foreground Color"
      case Background = "Background Color"
      case Bold = "Bold Color"
      case Selection = "Selection Color"
      case Cursor = "Cursor Color"
    }
    
    enum TerminalColors: String {
      case AnsiBlack           = "ANSIBlackColor"
      case AnsiRed             = "ANSIRedColor"
      case AnsiGreen           = "ANSIGreenColor"
      case AnsiYellow          = "ANSIYellowColor"
      case AnsiBlue            = "ANSIBlueColor"
      case AnsiMagenta         = "ANSIMagentaColor"
      case AnsiCyan            = "ANSICyanColor"
      case AnsiWhite           = "ANSIWhiteColor"
      case AnsiBrightBlack     = "ANSIBrightBlackColor"
      case AnsiBrightRed       = "ANSIBrightRedColor"
      case AnsiBrightGreen     = "ANSIBrightGreenColor"
      case AnsiBrightYellow    = "ANSIBrightYellowColor"
      case AnsiBrightBlue      = "ANSIBrightBlueColor"
      case AnsiBrightMagenta   = "ANSIBrightMagentaColor"
      case AnsiBrightCyan      = "ANSIBrightCyanColor"
      case AnsiBrightWhite     = "ANSIBrightWhiteColor"
      case Background          = "BackgroundColor"
      case Text                = "TextColor"
      case BoldText            = "BoldTextColor"
      case Selection           = "SelectionColor"
      case Cursor              = "CursorColor"
    }
    
    let iTermColor2TerminalColor = [
      iTermColors.Ansi0: TerminalColors.AnsiBlack,
      iTermColors.Ansi1: TerminalColors.AnsiRed,
      iTermColors.Ansi2: TerminalColors.AnsiGreen,
      iTermColors.Ansi3: TerminalColors.AnsiYellow,
      iTermColors.Ansi4: TerminalColors.AnsiBlue,
      iTermColors.Ansi5: TerminalColors.AnsiMagenta,
      iTermColors.Ansi6: TerminalColors.AnsiCyan,
      iTermColors.Ansi7: TerminalColors.AnsiWhite,
      iTermColors.Ansi8: TerminalColors.AnsiBrightBlack,
      iTermColors.Ansi9: TerminalColors.AnsiBrightRed,
      iTermColors.Ansi10: TerminalColors.AnsiBrightGreen,
      iTermColors.Ansi11: TerminalColors.AnsiBrightYellow,
      iTermColors.Ansi12: TerminalColors.AnsiBrightBlue,
      iTermColors.Ansi13: TerminalColors.AnsiBrightMagenta,
      iTermColors.Ansi14: TerminalColors.AnsiBrightCyan,
      iTermColors.Ansi15: TerminalColors.AnsiBrightWhite,
      iTermColors.Background: TerminalColors.Background,
      iTermColors.Foreground: TerminalColors.Text,
      iTermColors.Selection: TerminalColors.Selection,
      iTermColors.Bold: TerminalColors.BoldText,
      iTermColors.Cursor: TerminalColors.Cursor,
    ]
    
    struct iTermColorComponent {
      static let Red = "Red Component"
      static let Green = "Green Component"
      static let Blue = "Blue Component"
    }
    
    func itermColorSchemeToTerminalColorScheme(itermColorScheme: NSDictionary, #name: String) -> NSDictionary {
      var terminalColorScheme: [String: AnyObject] = [
        "name" : name,
        "type" : "Window Settings",
        "ProfileCurrentVersion" : 2.04,
        "columnCount": 90,
        "rowCount": 50,
      ]
      if let font = archivedFontWithName("PragmataPro", 14) {
        terminalColorScheme["Font"] = font
      }
      for (rawKey, rawValue) in itermColorScheme {
        if let name = rawKey as? String {
          if let key = iTermColors(rawValue: name) {
            if let terminalKey = iTermColor2TerminalColor[key] {
              if let itermDict = rawValue as? NSDictionary {
                let (r, g, b) = (
                  floatValue(itermDict[iTermColorComponent.Red]),
                  floatValue(itermDict[iTermColorComponent.Green]),
                  floatValue(itermDict[iTermColorComponent.Blue]))
                let color = NSColor(deviceRed: r, green: g, blue: b, alpha: 1)
                let colorData = NSKeyedArchiver.archivedDataWithRootObject(color)
                terminalColorScheme[terminalKey.rawValue] = colorData
              }
            }
          }
        }
      }
      return terminalColorScheme
    }
    
    func archivedFontWithName(name: String, size: CGFloat) -> NSData? {
      if let font = NSFont(name: name, size: size) {
        return NSKeyedArchiver.archivedDataWithRootObject(font)
      }
      return nil
    }
    
    func floatValue(value: AnyObject?) -> CGFloat {
      if let num = value as? CGFloat {
        return num
      }
      return 0
    }
    
    func arguments() -> [String] {
      var args: [String] = []
      for i in 1...Process.argc {
        if let arg = String.fromCString(Process.unsafeArgv[Int(i)]) {
          args.append(arg)
        } 
      }
      return args
    }
    
    extension String {
      var fullPath: String {
        get {
          let path = stringByStandardizingPath
          var directory = path.stringByDeletingLastPathComponent
          if count(directory) == 0 {
            directory = NSFileManager.defaultManager().currentDirectoryPath
          }
          return directory.stringByAppendingPathComponent(path)
        }
      }
    }
    
    func convertToTerminalColors(itermFile: String, terminalFile: String) {
      if let itermScheme = NSDictionary(contentsOfFile: itermFile) {
        println("converting \(itermFile) -> \(terminalFile)")
        let terminalName = terminalFile.lastPathComponent.stringByDeletingPathExtension
        let terminalScheme = itermColorSchemeToTerminalColorScheme(itermScheme, name: terminalName)
        terminalScheme.writeToFile(terminalFile, atomically: true)
      } else {
        println("unable to load \(itermFile)")
      }
    }
    
    let args = arguments()
    if args.count > 0 {
      for itermFile in args {
        let path = itermFile.fullPath
        let folder = path.stringByDeletingLastPathComponent
        let schemeName = path.lastPathComponent.stringByDeletingPathExtension
        let terminalPath = "\(folder)/\(schemeName).terminal"
        convertToTerminalColors(path, terminalPath)
      }
    } else {
      println("usage: iTermColorsToTerminalColors FILE.itermcolors [...]")
    }
    
    
    

    external by jeeftor modified Jun 1, 2016  91  0  1  0

    User Breakpoints for XCODE goes into: ~/Library/Developer/Xcode/UserData/xcdebugger

    User Breakpoints for XCODE goes into: ~/Library/Developer/Xcode/UserData/xcdebugger: Breakpoints_v2.xcbkptlist
    <?xml version="1.0" encoding="UTF-8"?>
    <Bucket
       type = "2"
       version = "2.0">
       <Breakpoints>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "No"
                ignoreCount = "0"
                continueAfterRunningActions = "No"
                scope = "1"
                stopOnStyle = "0">
                <Actions>
                   <BreakpointActionProxy
                      ActionExtensionID = "Xcode.BreakpointAction.DebuggerCommand">
                      <ActionContent
                         consoleCommand = "po $arg1">
                      </ActionContent>
                   </BreakpointActionProxy>
                </Actions>
             </BreakpointContent>
          </BreakpointProxy>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "No"
                ignoreCount = "0"
                continueAfterRunningActions = "No"
                scope = "2"
                stopOnStyle = "0">
             </BreakpointContent>
          </BreakpointProxy>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.SwiftErrorBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "Yes"
                ignoreCount = "0"
                continueAfterRunningActions = "No">
             </BreakpointContent>
          </BreakpointProxy>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.IDETestFailureBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "No"
                ignoreCount = "0"
                continueAfterRunningActions = "No"
                breakpointStackSelectionBehavior = "1">
             </BreakpointContent>
          </BreakpointProxy>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.OpenGLErrorBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "Yes"
                ignoreCount = "0"
                continueAfterRunningActions = "No"
                breakpointStackSelectionBehavior = "1"
                symbolName = "__GPUTOOLS_HAS_DETECTED_AN_OPENGL_ERROR__"
                moduleName = "libglInterpose.dylib">
                <Actions>
                   <BreakpointActionProxy
                      ActionExtensionID = "Xcode.BreakpointAction.OpenGLError">
                      <ActionContent>
                      </ActionContent>
                   </BreakpointActionProxy>
                </Actions>
                <Locations>
                </Locations>
             </BreakpointContent>
          </BreakpointProxy>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "Yes"
                ignoreCount = "0"
                continueAfterRunningActions = "Yes"
                symbolName = "UIApplicationMain"
                moduleName = "">
                <Actions>
                   <BreakpointActionProxy
                      ActionExtensionID = "Xcode.BreakpointAction.DebuggerCommand">
                      <ActionContent
                         consoleCommand = "expr @import Foundation">
                      </ActionContent>
                   </BreakpointActionProxy>
                   <BreakpointActionProxy
                      ActionExtensionID = "Xcode.BreakpointAction.DebuggerCommand">
                      <ActionContent
                         consoleCommand = "expr @import UIKit">
                      </ActionContent>
                   </BreakpointActionProxy>
                </Actions>
                <Locations>
                   <Location
                      shouldBeEnabled = "Yes"
                      ignoreCount = "0"
                      continueAfterRunningActions = "No"
                      symbolName = "UIApplicationMain"
                      moduleName = "UIKit"
                      usesParentBreakpointCondition = "Yes"
                      offsetFromSymbolStart = "0">
                   </Location>
                </Locations>
             </BreakpointContent>
          </BreakpointProxy>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "Yes"
                ignoreCount = "0"
                continueAfterRunningActions = "Yes"
                symbolName = "NSApplicationMain"
                moduleName = "">
                <Actions>
                   <BreakpointActionProxy
                      ActionExtensionID = "Xcode.BreakpointAction.DebuggerCommand">
                      <ActionContent
                         consoleCommand = "expr @import Foundation">
                      </ActionContent>
                   </BreakpointActionProxy>
                   <BreakpointActionProxy
                      ActionExtensionID = "Xcode.BreakpointAction.DebuggerCommand">
                      <ActionContent
                         consoleCommand = "expr @import Cocoa">
                      </ActionContent>
                   </BreakpointActionProxy>
                </Actions>
                <Locations>
                </Locations>
             </BreakpointContent>
          </BreakpointProxy>
          <BreakpointProxy
             BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint">
             <BreakpointContent
                shouldBeEnabled = "Yes"
                ignoreCount = "0"
                continueAfterRunningActions = "No"
                symbolName = "UIViewAlertForUnsatisfiableConstraints"
                moduleName = "">
                <Actions>
                   <BreakpointActionProxy
                      ActionExtensionID = "Xcode.BreakpointAction.Log">
                      <ActionContent
                         message = ""
                         conveyanceType = "0">
                      </ActionContent>
                   </BreakpointActionProxy>
                </Actions>
                <Locations>
                   <Location
                      shouldBeEnabled = "Yes"
                      ignoreCount = "0"
                      continueAfterRunningActions = "No"
                      symbolName = "UIViewAlertForUnsatisfiableConstraints"
                      moduleName = "UIKit"
                      usesParentBreakpointCondition = "Yes"
                      offsetFromSymbolStart = "0">
                   </Location>
                </Locations>
             </BreakpointContent>
          </BreakpointProxy>
       </Breakpoints>
    </Bucket>
    
    
    

    external by landonf modified Jan 1, 2014  81  0  2  0

    Every time I hit something that annoys me in Xcode, I add the feature/UX improvement/change I'd like to the list.

    Every time I hit something that annoys me in Xcode, I add the feature/UX improvement/change I'd like to the list.: xcode-gripes.md
    # Xcode Wish List:
    
    ## Legacy Support
    - Additional optional downloads:
        - Older SDKs, eg, for building ancient projects.
        - Older compilers (for same).
    - Either ship gcc/llvm-gcc or don't. Don't ship clang and call it 'gcc', that just breaks anyone who actually needs GCC and finds your not-gcc in the PATH.
    
    ## UX
    ### Project/File Navigation
    - Always show the project tree and toolbar in the 'main' project window. HAVE a 'main' project window.
    - Open files in new tabs by default
    - Cleaner tab UI (see IntelliJ/AppCode)
    - "View in Project Tree" from jumpbar w/ right click
    - Allow creating a new file with a minimal UI directly from the project tree
        - Opt-enter or right-click 'add file'
        - Select file type from a pop-over; can use keyboard to type partial template name.
        - Type file name and hit return -- don't use the standard modal 'Save' dialog, just save the file where you'd expect it to be.
    
    ### Editing UI
    - Allow breaking out of nested palletes into floating palletes.
    
    ### Snapshots
    - They shouldn't exist.
    
    ### Project Configuration 
    - Key shortcut to display.
    - Display in seperate window by default; don't modally take over the project window.
    - Custom build rules should be shareable across the entire project, not just one target.
    - Build Settings UI
        - Bring back the "Add settings item" buttons in the main UI.
        - Provide  contextual menus for functionality stuffed in the "Editor" menu (see Context Menus) below.
    
    ### Context Menus
    - Put 'Editor' menu items back into the context menus.
    
    ### Refactoring
    - If indexing needs to complete, display a spinner rather than erroring out.
    - Lighter-weight (non-modal) refactoring UX. It should be fast to change things.
    
    ### Warnings/Errors
    - Single-key jumping directly to FULL errors displayed in a floating build log that always shows the *latest* build log.
    - Don't display resource warnings, eg, 'Missing "Default-568h@2x.png" launch image' at the same level as compiler/build warnings.
    
    ### Inline Documentation
    - Open documenation in the documentation browser, not a popover.
    
    ### Documentation Browser
    - Restore the 'Overview' section (Xcode <= 4). Displayed:
        - Inherits from
        - Conformed to
        - Containing framework
        - Availability (eg, 10.5 and later)
        - Declared in (the header(s) the type is declared in)
        - Companion guides (eg, top-level programming guides).
        - Related sample code
    - Move document index to the right, always display by default. There's more room on the right margin.
    - Show full search results by default (not the floating results) to allow easier selection (see Xcode <= 4).
    - Search results should be displayed persistently to allow easier browsing (see Xcode <= 4).
    - Display docsets on the left by default, expanded to current item.
    - Use standard forward/backward buttons. What are those things?
    
    ## Functionality Improvements
    ### Compilation
    - Improved error reporting
    	- Show FULL compiler errors, inline (see Warnings/Errors section above).
    	- Always select and display the last build log by default when switching to the build log UI.
    	- Hide older build logs. Nobody cares.
    	- Provide a build output window or section of the display (see Xcode <= 3, IntelliJ), rather than stuffing it modally in the main project window.
    
    ### Templates
    - In-Xcode UI for defining/modifying file and project templates
    - Project Templates
    	- Re-introduce non-storyboard templates. Storyboards are stupid, and taking away the non-storyboard templates was stupider.
    	- iOS Static Frameworks
    
    ### Code Style
    - Allow defining custom code style (see IntelliJ)
    	- Including disabling indenting of top-level C++ namespaces
    	- Allow specifying more whitespace details.
    
    ### Code Completion
    - While typing, completion should display the text I've typed (including capitalization), NOT the completion it thinks its found. Eg, if I'm typing "Session" and Xcode has found "session", "_S_ession" should still be displayed until I choose to select the auto-completion.
    - Don't automatically complete a function(arguments) if an argument list already exists. (eg, fo<complete here>(already, has, args));
    - Provide better auto-fix suggestions; eg:
        - Add missing required protocol methods.
        - Create missing ivars.
    - Provide a simple key-combo for auto-fix + code generation.
    
    ### Target Definitions
    - Multi-Platform Builds
    	- Automate handling of essentially duplicated targets across sim/ios/mac. It should be possible to build a single 'target' for multiple platforms without duplicating all the target settings across each platform.
    
    ### Unit Testing
    - Auto-generatation of XCTestCase for a given class.
    	- Create the file automatically
    	- Add to appropriate target automatically
    	- #import the target class's header at the top of the file.
    	- Make this accessible from the autocomplete keystroke.
    - Allow running a test, or multiple tests, simply by selecting the source files or ObjC class names and choosing 'Test' from a context menu.
    - Test errors should disappear if a rebuild fails.
    - XCTAssertEqual's should either cast, or provide an actually useful message when equality checking fails due to differing types.
    
    ### Interface Builder
    - Display in seperate window by default
    - Use floating palettes instead of embedded palettes.
    - Re-introduce IB plugins for Mac OS X
    - Introduce IB plugins for iOS.
    
    ### Embedded Tools
    - External 'shell' applications for embedded tools; allow for both in-IDE editing and external editing in a dedicated app:
    	- Property List Editor
    	- Interface Builder
    
    ### Bundled Tools
    - Update command line tools:
    	- Subversion binary is older than dirt.
    - Expose "Bundled" Tools in /Applications (eg Instruments).
    - Support for automatically downloading 'extra' tools
    	- Extra:
    		- Instruments
    		- File Merge
    		- IORegistryExplorer
    	- Legacy:
    		- Property List Editor
    		- ...
    
    ### Debugging
    - Hide CPU+Memory Stats by default. Those have nothing to do with debugging.
    - Always show full backtrace. In fact, get rid of summary backtraces entirely.
    - Show register state by default
    	- Ideally in a compact/seperate/liftable window.
    	- Once displayed, don't collapse register state after stepi/stepi.
    - Show the actual crashing instruction, even if no code is available, rather than the first frame with user code.
    - *Easy* and fast switching between assembly and source views.
    - Allow for easy lifting of the debugger into seperate window.
    - Always expand debugger on a breakpoint (eg, a unit test breakpoint).
    - Always display the LLDB console if it was previously displayed.
    - Create a shorter LLDB command line syntax for human beings.
    
    ### Command Line
    - Simplify running the compilers for available targets by providing classic 'target-triplet' compiler wrappers (eg, arm64-apple-ios-clang and apple-ios-clang)
    	- Provide both arch-specific and arch-non-specific wrappers.
    	- Use xcrun to fetch paths.
    	- Automatically set -isysroot and -arch flags.
    
    
    
    • Public Snippets
    • Channels Snippets