Skip to main content

Removing NSLogs from release build

NSLogs are great when debugging to see exactly what is going on but the downside is that they impact heavily on performance (I speak from experience on that one).

Luckily there is a way to "disable" them on release builds of your application and still have them in your debug builds. we do this by simply adding the following macro to the prefix .pch file in your project or anywhere before the entry point to your application.

#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...) {}
#endif

If you want an explanation here it is.

When you build a Debug version of an application DEBUG is defined , if its a release build , DEBUG is not defined.This macro checks if DEBUG is defined , if it is it sets NSLog to what it should be , if DEBUG is not defined then NSLog is defined as an empty code block that as you should know will do nothing , thus saving on performance.

Comments

  1. Wasn't aware that NSLog caused any performance issues if left in production code. Once again, thank you for posting this.

    ReplyDelete

Post a Comment

Popular posts from this blog

Setting up Qt Creator for assembly

After fiddling with inline asssembly (not very successfully) ,I recently decided to try writing proper assembly and compiling with NASM in Linux. After writing a hello world using gedit and having a terminal open for compiling,linking and running I had a thought.,there has to be a better way to do this. So I tried Qt Creator ,because I know it's easy to add custom build and run commands,and what do you know? I got it to work. Here's how,my screenshots and assembly code are in Linux but the set up should be the same regardless of the operating system,if you are not using Linux then just use the same commands you use to assemble in your operating system. First off ,create a new console application: I named mine ASM Rename the main.cpp to main.asm and delete all the text inside.then insert some assembly: Now open up the “Project” tab and edit the build settings,remove the current build and clean steps and remove the “-build-desktop” from the en

Using delegates in Objective-C

Why use delegation? Well when writing Objective-C programs in Xcode we are encouraged to use the MVC(Model View Controller) structure.In MVC a model cannot send messages directly to a specific controller.This can become a problem if data in your model changes independantly and you need to update this information in your view via the controller(The model must never communicate directly with the view).This is where a delegate comes in,it allows messages to be sent from the model to a controller that is not specified in the model but is rather specified by the controller,in other words the controller specifies itself. If you dont really understand what im talking about so far ,don't worry.I didn't understand delegates either until I needed one,but hopefully by the end of this tutorial you will understand not only how to use a delegate ,but the reason you would want to use one. Program breakdown For this tutorial we will write a program that has a model that will change an

Software Developers Experience building a robot Part 2(Tank treads and blue smoke)

Tanked As I mentioned in  part 1 , I had drawn the conclusion that legs were not what I wanted and that tank treads are probably the most overkill for weight bearing. So , I ordered a Rover 5 base. Rover 5 robot base Unforeseen requirements When the Rover base arrived I opened the box to discover something I had completely overlooked; I didn't have a motor controller. With no clue of what an H-Bridge was and a new found determination I decided to build my own motor controller using about 6 relays. It was finally time to get serious about soldering on those proto-boards. I used a breadboard to prototype a system that used 6 relays and 4 transistors. You could hear the loud clickity clack of the relays as the direction changed but I was pretty proud of my ingenuity. It was time to solder! This was the most intricate soldering task I had ever undertaken and it really showed that I'm more of a software kind of guy. I perceived it to be the longest time I have eve