i am new to iphone development and i am going through tutorial and some sample.
i want to know what is the difference between NSObject and UIViewController class and how we will come to know which class we should use.
some are written in NSObject and some are in UIViewController.
From Wikipedia, a basic overview of object-oriented programming:
In Objective-C, all Objects are based upon
NSObject. Just take this at face value for now. If you want to use an Object, it’s going to be based on NSObject. So, unless you’re using anintor afloat, you’re likely using something that’s based onNSObject.NSObjectin-and-of-itself, doesn’t really supply any functionality. It’s your ‘starting place’ or ‘blank slate’ for an Object.You might build an Object definition which is used to represent an Animal, like this:
In this example we’ve described a basic Animal. This class basically does two things; knows the age of the Animal, and can mate with another animal to produce an Animal offspring.
You’ll notice in that example that we based our Object definition on NSObject.
Now, say we want to create a definition for a Human; well, a Human is, and always will be, a subset of all Animals. So, we can re-use all of the logic in the Animal class definition to create a Human definition – and we might do so like this:
In this example, we’ve created a new definition for a type of Object called “Human”. We only defined one thing: a method which gives our class the ability to lie – except we’ll also get the ability to mate because we’re based on “Animal”, and “Animal” already describes how to mate.
Getting to your question:
UIViewController contains a BUNCH of logic for doing some very complex tasks. Most of that logic is part of the Cocoa Touch framework.
If you’re making an “Animal” class, you don’t need to know how to respond to user input from the screen, you don’t need to know how to manage a UIView, you don’t need to keep track of parentViewControllers, etc. So, basing our Animal class on UIViewController would be silly. This is when NOT to use UIViewController.
Now, if you’ve making a user interface screen on the iPhone, and you want to perform some routine when the user clicks on a button – then you DO need all of the UIViewController stuff, so you’d subclass that.
I can understand why, if you’re not coming from an Object Oriented Programming background, you might be confused about this. It seems like most of the things you’d need to create ARE UIViewController subclasses. However, as you explore the world of OOP, you’ll discover that not only are Objects something someone else wrote that you can use – but they are things you’ll want to create from the ground up to accomplish things you used to do procedurally.
Best of luck on your exciting journey.
I’d highly recommend you take a trip to your local Barnes and Noble or head over to Amazon.com and pick up some books on the topic – if you have a friend who already knows OOP a good mentor is much faster than learning yourself.
Don’t forget, on the iPhone, you’ll have to deal with memory management as well. This is a sticking point for a lot of people – and causes a lot of headaches if you don’t follow the rules. Learn them early and you’ll be served well.
Hope that helped,
Cheers.
Sources: