lifeofcoding.com Ads.txt file
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<title>
Life of Coding ·
</title>
<!-- CSS -->
<link rel="stylesheet" href="/public/css/poole.css">
<link rel="stylesheet" href="/public/css/syntax.css">
<link rel="stylesheet" href="/public/css/hyde.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700|Abril+Fatface">
<!-- Icons -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/public/apple-touch-icon-144-precomposed.png">
<link rel="shortcut icon" href="/public/favicon.ico">
<!-- RSS -->
<link rel="alternate" type="application/rss+xml" title="RSS" href="/atom.xml">
</head>
<body>
<div class="sidebar">
<div class="container sidebar-sticky">
<div class="sidebar-about">
<h1>
<a href="/">
Life of Coding
</a>
</h1>
<p class="lead"></p>
</div>
<nav class="sidebar-nav">
<a class="sidebar-nav-item active" href="/">Home</a>
<a class="sidebar-nav-item" href="/archives.html">Archives</a>
<a class="sidebar-nav-item" href="/about.html">About</a>
<a class="sidebar-nav-item" href="/atom.xml">RSS</a>
</nav>
<p>© lifeofcoding.com All rights reserved.</p>
</div>
</div>
<div class="content container">
<div class="posts">
<div class="post">
<h1 class="post-title">
<a href="/2015/08/07/Why-I-prefer-AppCode-over-Xcode/">
Why I prefer AppCode over Xcode
</a>
</h1>
<span class="post-date">07 Aug 2015</span>
<p>For the past four months, I've been learning iOS development. Basically I just read a <a href="https://www.amazon.com/Beginning-iPhone-Development-Exploring-iOS-ebook/dp/B00M4FC7O6/ref=mt_kindle?_encoding=UTF8&me=">book</a>, and then started writing code. I haven't started <code>Swift</code> language yet, for most iOS open-source libraries are written in <code>Objective-C</code>. And I think I won't start using <code>Swift</code> in another one or two years.</p>
<p>As an Android developer, I am used to <code>Android Studio</code>, which is a fantastic IDE for coding. For those Android developers who havn't using <code>Android Studio</code>yet, I strongly recommend you try it. </p>
<p>When I started using <code>Xcode</code> for iOS development, I am very confused.</p>
<h3>What is wrong with Xcode</h3>
<h5>I accidentally close projects all the time.</h5>
<p><code>cmd + w</code> is a common shortcut for close a tab or window on OSX. If you're using <code>Safari</code> or <code>Chrome</code>, you know what I mean. If there are more than one tab in your brower when you use <code>cmd + w</code>, it close the focused tab. If there is no tab left, it close the window. It's quite easy to understand, right? But NOOOO, <code>Xcode</code> doesn't behave like that. If you use <code>cmd + w</code>, it close the whole project.</p>
<h5>Delete a whole line? NO!</h5>
<p>You can't use <code>cmd + delete</code> to delete a whole line, which is also a common shortcut on OSX. Yes, you can delete a whole line of code using <code>cmd + delete</code>, but if there is just an extra line and you wanna to delete it? <code>cmd + delete</code> will delete the line and delete half the line above it.</p>
<h5>Code completion sucks</h5>
<p>If you wanna use a certain method in a <code>NSObject</code>, which has a word <code>index</code> in it, but you can't remenber the whole name of the method, what will you do? Look up the document or source code to get the exact name or the first letter of the method? Because <code>Xcode</code> can only auto-complete code from the beginning. For example, if you type in <code>[Object index</code>, the IDE won't tell you all the methods related to <code>index</code> keyword, it can only tell you the methods started with <code>index</code>. This really makes writing code slower.</p>
<h5>NO Auto-import</h5>
<p>Why not? Even <code>Eclipse</code> has this feature a long long time ago. I can't stand that when I am writing a method/function, the IDE tells me:" Oh, I can't recognize this. Oh, you can't use that".</p>
<h5>Can you really see the Log?</h5>
<p>The font and line spacing of the Log console is a disaster. The text is bold and line spacing is way too small. So the log just looks like a black block. I can't really distinguish one log from another.</p>
<h5>CocoaPods</h5>
<p><code>CocoaPods</code> is a dependency manager for iOS development, like <code>gradle</code> or <code>maven</code> for Android and Java. To use <code>CocoaPods</code> in your project, you can follow the steps on the <a href="https://cocoapods.org/">CocoaPods website</a>. This is not convenient enough! Becuase you need to use the terminal, which <code>Xcode</code> do not provide a shortcut to open and relocate to the project folder. You will have to open a terminal, then go to the project folder, or go to the project folder in finder and open a terminal there. Finally you need to run a command line to install the dependencies. Why all the trouble? <code>AppCode</code> can do all that for you, all you need to do is editing the <code>Podfile</code>.</p>
<h3>AppCode is better</h3>
<p><code>AppCode</code> fixes all the complaints I have about <code>Xcode</code>, plus I can use all the keymap I am already familiar with in <code>Android Studio</code>. Just export the keymap settings in <code>Android Studio</code> and import it in <code>AppCode</code>.</p>
<p>You can find out many other better feature of <code>AppCode</code> on the <a href="https://www.jetbrains.com/objc/features/">official website</a>. I am sure there are a lot to explore. You can find some tricks and tips on the <a href="https://blog.jetbrains.com/objc/">AppCode Blog</a>. This IDE truely makes my life a lot easier.</p>
<h3>Flaws in AppCode</h3>
<p><code>AppCode</code> is not perfect, though. When it comes to edit <code>xib</code> or <code>storyboard</code> file, it is crappy. And <code>AppCode</code> sure cannot submit apps to the AppStore. It's also not that good when editing the project settings.</p>
<p>Now my workflow of a new project is this: </p>
<ol>
<li>Create new project using <code>Xcode</code></li>
<li>Config <code>CocoaPods</code> in <code>AppCode</code></li>
<li>Edit <code>xib</code> and <code>storyboard</code> in <code>Xcode</code></li>
<li>Write <code>Objective-C</code> code in <code>AppCode</code></li>
<li>Config project in <code>Xcode</code></li>
<li>Submit to beta test or AppStore in <code>Xcode</code></li>
</ol>
<p>Because <code>AppCode</code> can sync code and files instantly with <code>Xcode</code>, you don't need to worry about conflicts when editing the same project/file using two IDEs.</p>
<h3>Others</h3>
<p>I don't mean starting an argument about which IDE is better. It's just, to me, <code>Xcode</code> is not good enough. I can be more efficient and focused when using <code>AppCode</code>, that's what really matters.</p>
<p>If you are always an <code>Xcode</code> user, you can try a <a href="https://www.jetbrains.com/objc/download/">30-day trial</a> of <code>AppCode</code>, I mean, it doesn't hurt, does it? If you don't like, leave it there, delete it, do whatever you want with it. But if you like it, you will find out it really is an productivity tool. After all, IDE should make coder efficiency, right?</p>
</div>
</div>
<div class="pagination">
<a class="pagination-item older" href="/page2">Older</a>
<span class="pagination-item newer">Newer</span>
</div>
</div>
</body>
</html>