Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - kjmcneish

Pages: 1 ... 44 45 [46]
Flying with Objective-C / Re: Chapter 16 Slowed My Roll
« on: October 23, 2012, 06:56:58 PM »

Yes, the material in chapter 16 is definitely advanced! Re-reading the chapter is definitely a must for grasping these concepts. I've been teaching object-oriented programming to many different people over the years and these are definitely concepts that you should review a few times.

If you have any specific questions regarding a particular advanced concept, definitely post your questions here, and I'll answer them for you!


(I had to delete the original message to get rid of thousands of spam messages that showed up in the forum). Here it is again:

Tom77w asked:

In view of the large number of app developers with apps on the app store and new big established app studios making apps is there hope for newbies? Just seems like every idea imaginable has already been developed by an app developer.

I am encoraged to persevere because of experts in this field such as Kevin McNeish who have provided an elegant and effective way for rookie app developers to learn the art of creating apps. I like the simplicity of Kevin's teaching style because I don't feel like my head is about to explode after reading chapter two which has happend reading various IOS App dev books on the market.

Carving out a niche in the huge app market is more challeging than ever. And I hope those of us who simply would like to make a decent living at making apps can still do so.

While this question is directed to Kevin, anyone wishing to provide some input is welcome.

Thanks in advance for the feedback.

I replied:


Glad to hear you're enjoying the series!

In answer to your question--absolutely. There are always new trends and new interests in the world at large and if you can tap into these you can create an App that does very well.

For example, EVERYONE is currently complaining about the Maps App, but Apple has created an opportunity where you can creating a Routing App (subways, buses, trains) that users can purchase directly from the built-in Map App.

There are also a lot of Apps out there that you can improve on. Even though an App already exists to solve a particular problem, often there is a better approach that you can implement in your own App. Apple has been tremendously successful in doing just that. Taking something that exists, and making it far more user friendly. If you haven't already done so, I recommend checking out Apple's iOS Human Interface Guidelines ( There are far too many Apps in the store that don't take the advice in this guide!

You can also get your App noticed if you create a Universal version that works for both the iPhone and the iPad (there are a lot less Apps in the iPad store). If you take advantage of new features in the operating system, you can also stand out. Many App developers are reluctant to take advantage of new iOS features because it means their Apps won't work on older operating systems. If you're willing to take the plunge with a new App, you can get noticed by taking advantage of great new features.

You can also get into the business of creating Apps for others. A great opportunity in iOS 6 is the new Passbook App. You can create coupons, store cards, boarding passes and event tickets for businesses in your area. It's pretty exciting for a local (or national) business to see their store cards and coupons scannable from an iPhone.

There is also new integration with Facebook and Twitter. It's VERY easy to incorporate this functionality into your App (only two lines of code) and you can have your users sharing photos and messages from within your App.

There's also the new Collection View available in iOS 6. It allows you to easily create a user interface that mimics the built-in Photo and Music Apps. We've been waiting a long time for this functionality, and now it's up to App developers to incorporate this new control in their Apps.


Flying with Objective-C / Re: String constant and string object?
« on: October 10, 2012, 04:35:09 PM »

In Objective-C, the "@" sign that prefaces a string indicates that the string is an object.

1. You can declare a string variable, that will eventually point to a string object: NSString *myString;
2. This creates a pointer to an address in memory where the string is located, once you store a string object into the variable.
3. To do this, you create a string object and store a reference to it in the myString variable: myString = @"The content of myString";

Yes, you can do this in a single line of code:

NSString *myString - @"The content of myString";

You must have the "@" sign prefix on the string when you first declare it to indicate it is an Objective-C string object.

You don't need the "@" sign prefix in the following line of code, because the string has already been created:

self.lblDemo.text = myString;

In this line of code you are not creating a string object. You are simply storing a reference to the contents of the myString variable into the self.lblDemo.text property.

Best Regard,

Flying with Objective-C / Re: Sometimes pointers and sometimes not?
« on: October 05, 2012, 04:23:17 PM »

Great question!

When you use an asterisk when declaring a variable:

NSString *myString = @"Hello World";

You do this because the * indicates that the variable holds a pointer to an object.

However, Objective-C is not fully object-oriented, so not everything is an object (as is the case with languages such as Java or C#). NSUInteger variables do not hold pointers to objects. They contain simple, single values--in this case, an integer. Since these are singular values and not objects, you don't use an asterisk.



Great advice! Comments are the best way to quickly understand code when you come back several weeks or months later and try to figure out what's going on.


Flying with Objective-C / Re: Build fails in Chapter 9
« on: October 04, 2012, 01:26:16 PM »

Yes, your posts are extremely helpful for others who come after you. This forum is brand new, as is the book series, so your detailed posts are a great addition. Kudos again for coming up with the magician metaphor in your earlier post. It really shows that you understand the concepts!


Flying with Objective-C / Re: Build fails in Chapter 9
« on: October 02, 2012, 10:08:41 PM »

Can you zip up your project and send it to It will take me just a few moments to figure out what's going on if I can see the code for myself.


Flying with Objective-C / Re: Exercise 6.1 and the Integer
« on: October 02, 2012, 09:51:11 PM »

There are definitely a variety of choices, especially since Objective-C finds its roots in the C language. Objective-C is a superset of's C and then some!

Ultimately, this is something you just need to know. As with any language, there are basic things you learn as you immerse yourself.

When you declare an integer, you can specify NSInteger, which can hold both positive and negative integers, or NSUInteger which only holds positive numbers. If you're sure the variable will only hold positive values (for example, a count of items, then you can use NSUInteger. If you're not sure, then use NSInteger.



Your analogy is a good one!

You could definitely think of class and instance methods in the way you describe too.

To answer your question about declaring types, all types must be declared somewhere. In your example, both aRat and aRabbit must be classes that are declared either in your project, or in a Cocoa Touch framework. Your confusion probably stems from the fact that some classes are declared in your project (which you see) and other classes are declared in the Cocoa Touch framework, and you don't see these declarations. The Cocoa Touch class definitions are added to your project when you import the header file of one of the Cocoa Touch Framework libraries. For example:

#import <UIKit/UIKit.h>

Hope that helps!

Flying with Objective-C / Re: My first attempt on the first exercise!
« on: October 01, 2012, 07:56:25 PM »
That's right...if you look higher in the code, you can see the following:

NSString *myString = @"Objective-C";

This means the myString variable contains the string "Objective-C".

The next line of code passes a stringByAppendingString: message to the object stored in the myString variable:

self.lblDemo.text = [myString stringByAppendingString:@" is for me"];

This message calls does NOT change the string stored in the myString variable. This is where I think you ran into difficulty. The myString object returns an "Objective-C is for me" string (which gets stored into the self.lblDemo.text property), but this does not affect the contents of myString.

Does that make sense?


Book 1: Diving In / Re: Amazing first book in the series!
« on: October 01, 2012, 06:00:01 AM »
Glad to hear you enjoyed Book 1, and thanks for the kind words! Between the book series and this forum, we will definitely get you up and running.

Yes, we will absolutely be including information on Core Data in an upcoming book. Core Data can seem a bit intimidating at first, but once you understand the concept of "entities" (and once this book series supplies you with some classes that it make it MUCH easier to use Core Data) it is definitely attainable!

P.S. If you haven't already done so, I encourage readers to post reviews on Amazon or the iBookstore and let other readers know what you think. It definitely helps a book series like this in the early stages!

Best Regards,

Book 1: Diving In / Re: Group Table View Background Color deprecated?
« on: October 01, 2012, 05:54:41 AM »
Yes, you will get a compiler warning indicating that support for setting Group Table View Background Color will eventually be removed. As you can see, at run time, it does actually work properly.

To get rid of this error:

1. In the Project Navigator, select Mainstoryboard.storyboard.
2. In the storyboard, scroll over to the Map Options scene
3. Click on the scene background to select it
4. In the Properties Inspector, go to the Background setting and select a color (such as Light Gray Color)

Now when you build and run your project, you will no longer get the compiler warning.

Best Regards,

Book 1: Diving In / Re: To get to the correct view depicted in Figure 4.21
« on: September 29, 2012, 08:33:41 PM »
Hmmm...that IS odd. I just tried the same thing in Xcode 4.5 and i wasn't able to reproduce what you were experiencing.

At times, when you see odd behavior like this, you have to close Xcode and open it back up again.

Best Regards,

Book 1: Diving In / Re: Figure 5.10 does not match?
« on: September 29, 2012, 08:30:08 PM »
Yes, it's definitely because you are using Xcode 4.5 and the book is using Xcode 4.4. There are some slight differences between the two versions. All of the settings described in the book should still be in the Attributes Inspector, but at times in a slightly different place.

Best Regards,

"How To" Topics / How To Download Sample Code
« on: September 16, 2012, 04:04:00 PM »
There is sample code associated with each book in the iOS App Development for Non-Programmers series.

If you're reading the book on an actual Kindle device or iPad, you can't download the sample code to that device. Instead, you need to download the sample code on the Mac computer on which you are running Xcode.

To do this, just launch a browser on your Mac, and enter the download link into the address bar of your browser, and press Enter. This takes you to the download page, where you can then click the Download Sample Code link.

The only exception to this, is if you are running the Kindle App on your Mac. Then you can just click on the link, and the sample code will be downloaded to your Mac.

Happy Coding!

Pages: 1 ... 44 45 [46]