threading in iOS applications iOS Development

Threading in iOS Applications: The Basics

If your new to mobile application development, one topic you should learn early on, is the concept of threading. Threading is a computer science term that handles the order of execution of tasks on the CPU. Threads are usually handled by the operating system. However there might be some tasks that can only be carried out on specialized threads created by the OS. To put things in context, consider the following example. Lets say I create an iOS application that uses a REST API to fetch data about upcoming concerts using location data. When you launch this application, the app freezes, takes a long time to load, and you see a white screen for more than 3 seconds. This is a common example of an app thats not optimized for the use of threads. As a result, you might  receive complaints from your users saying that the app is slow or they delete your application all together. After a while, you decide to make some changes.

 

Upon inspection of your code, you find that your REST call is causing this slow down inside the ViewDidLoad method. you have to remember that in this case your code is being executed line by line. This means when your REST call is carried out, the CPU must finish getting your data before displaying it on screen. After reading this, you may be asking why does this happen? This happens because by default your application business logic and UI are loaded on the same thread called the main thread. Quick operations like simple math and string manipulation are perfectly fine on the main thread, but time consuming tasks like REST calls are not the best option. So how do we fix this? The simplest thing we could do is move this time consuming task to what is called the Background Thread. The Background Thread is a thread designed for complex operations. In return you leave the Main Thread open for UI changes. Here is some example code on how to make this happen.

Read more “Threading in iOS Applications: The Basics”

iOS Development

How To Use UIAlertController in iOS

If your reading this, then you stumbled on to my next post since writing my introductory post on New Years Day. If you have not read that yet, I strongly suggest you do that  to learn more about why I’m blogging. Anyway, today’s post is all about some recent findings I discovered during the development process of the ParkLane iOS app. My use case is pretty simple and common for the platform. I have a login and sign up ViewControllers inside my app where the user can fill out some fields to create an account in our database or login into a existing one. However, I needed some kind of alert to pop up on the screen to tell a user if one of the following errors occurred:

  1. Wrong Email
  2. Wrong Password
  3. Wrong Email and Password

As you can tell this presents a problem. I know Apple has something to solve this called a UIAlertView. Its pretty simple to use, it looks like this:
let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
delegate: self, cancelButtonTitle: "Ok", otherButtonTitles: nil)


// show alert on screen
button2Alert.show()

I wasn’t worried to use this code because I’ve used it before, However Xcode presented me with this warning:

 UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead

This left me puzzled, after doing some research this change occurred around the release of iOS 8 in 2014. After thinking about it some more, It must have been a change that I simply missed, and I take the blame for it. In a request to redeem myself I took out the old UIAlert code and replaced it with the newer UIAlertController.

After trying this new API, I have to say I like this better than the old UIAlertView. The newer framework seems like more work, but your getting more control over your alerts. Here is a quick code example to show you the difference.


let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)

If your familiar with how iOS views work the this seems pretty straight forward. I bet developers that don’t understand iOS or Swift can figure out what this code does.  I also enjoy that the addAction method has a completion handler in order to execute some custom code when you tap a button on the alert.

Before I go, I realize that this first iOS post was pretty simple but do not worry. I have plenty of content coming up on more advance topics. So keep following my blog and be sure to follow me on Twitter to be alerted when new content is posted.

2018goal Software Development Career

My Goal for 2018

Hello Everyone,

At the time of writing this post, its currently New Years Day. I figured today would be the perfect day to layout my vision for this site, and talk about some goals for my software development career in 2018. For easier reading purposes, I have broke down each of my goals into sections.

 

Why start a Blog?

This past summer, I read a book called ‘Soft Skills: The software developer’s life manual’ by John Sonmez. This book has changed my perspective on life, In return I begin to start the journey to take back my time and try to work for myself. This book explains how important it is to market skills as a software developer in order to get new clients and maybe a higher paying job. This book also mentions multiple times that a blog is a perfect medium to market my skill sets through blog posts and links to previous work. However with that being said, This isn’t my first time blogging. I’ve been trying to blog about various topics ranging from programming, tech news and video games for many years, but at the time I was very young and was not thinking about a long term career goal. This time it is  a completely different perspective, I really want to be able to turn my skills into a sustainable business where I can be happy with the work I’m doing while taking back my time. Blogging into 2018 should help me do that while being able to market myself. 

 

What are you going to be blogging about?

This is a very good question. While I was building this site, I often thought about what I’m going to write about. After some thinking I came up with the following ideas.

  • Documenting the progress on my side projects: At the time of writing this, I’m currently working on two side projects. Both of these projects I’m extremely passionate about and generally enjoy working on them. However, I think writing about these projects will help potential job recruiters and new developers some perspective on what technologies I know and use.
  • Documenting my experiences learning Swift again: It is no secret that I love Apple and the iPhone. When the Swift Programming language was announced in 2014. I was hooked.  The announcement couldn’t not have come at a better time either, I was just about to graduate high school and start my first year of community college. With that in mind, I stayed up late reading Swift tutorials, watching Swift YouTube videos and reading the official Swift iBook. I made a few apps and submitted them on the App Store during that summer. The apps were not very good, but I was proud of them. However, I also wrote a lot of Swift code. (most of which I lost due to a hard disk failure :/). Since I started working full time, I haven’t had a chance to use Swift, Most of my day is spent in Visual Studio and C#. Don’t get me wrong, C# is one my personal favorite languages and tools like Xamarin make it possible to develop mobile apps in C#. However, through my experience, these tools are hard to use and I have ran into problems with them. With that being said, I can’t wait to start learning Swift again and to create better apps.
  • Software Development tips and tutorials: This is a pretty generic topic but I figured since developing software is a learning process. I figured I would create some content on how to accomplish certain tasks, tutorials on certain frameworks and languages  and good tips for newer developers.

How often are you going to post?

This is a easy one! My goal is to post one blog post a week on any of the following topics outlined above.

 

If your still reading this, congratulations you have made it through my first blog post. Its only going to get better from here. If you have questions, comments and concerns please use the contact section of the home page or email me if you want to get a hold of me.