Thursday, June 28, 2012

Handle NSLog before release

Go to your Build settings and under the Debug configuration add a value to "Preprocessor Macros" value like:      DEBUG_MODE=1
Make sure you only do this for the Debug configuration and not for Beta or Release versions. Then in a common header file you can do something like:

#define DLog( s, ... ) NSLog( @"<%@:(%d)> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#define DLog( s, ... )

Now instead of NSLog use DLog everywhere. When testing and debugging, you'll get debug messages. When you're ready to release a beta or final release, all those DLog lines automatically become empty and nothing gets emitted. This way there's no manual setting of variables or commenting of NSLogs required. Picking your build target takes care of it.

Wednesday, June 20, 2012

iPhone/iPad Technical Interview Question(FAQ) with answers(Part 3)

Prev….(Part 2) 

Q14. What are the ways to store data localy on device ? 

We store data localy in device through:
  1. Plist.
  2. NSUserDefaults.
  3. SQLite.
  4. CoreData.

Q15. What is the way to store value as default in application without using nsuserdefault for the application run firts time, because first time there will be no any data in nsuserdefault.
Through Plist.

Q16.  What is the significant of passing (NSDictionary *)launchOptions in application didFinishLaunchingWithOptions ? What are the options in application didFinishLaunchingWithOptions ?

 Launching an application by tapping its icon, an application can be launched in order to respond to a specific type of event.

For example, it could be launched in response to an incoming push notification, it could be asked to open a file, or it could be launched to handle some background event that it had requested. In all of these cases, the options dictionary passed to theapplication:didFinishLaunchingWithOptions: method provides information about the reason for the launch.
In situations where the application is already running, the methods of the application delegate are called in response to key changes.
There are 7 launch options key:
For example:
When you actually receive a notification, there are 2 way it can be handel in our application:
1.    When application is not running, and user click on view button on the notification. To interpret this notification we have to implement application:didFinishLaunchingWithOptions:  instead of  applicationDidFinishLaunching: like this:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  NSDictionary* userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
  NSDictionary *payLoad= [userInfo objectForKey:@"aps"];
  NSDictionary *alertMsg = [userInfo objectForKey:@"alert"];
  NSDictionary * badgeCount = [userInfo objectForKey:@"badge"];
// something with this.

2.    And when application is already in running state, in this case application delegate receives a call to application:didReceiveRemoteNotification:. This method also receives userInfo like this:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
NSDictionary *payLoad= [userInfo objectForKey:@"aps"];
  NSDictionary *alertMsg = [userInfo objectForKey:@"alert"];
  NSDictionary * badgeCount = [userInfo objectForKey:@"badge"];
// something with this.


Q17.  What are the design patterns in iOS ?

Q18.  Difference between Cocoa and Cocoa touch ?


Q19.  What is KVC and KVO ?

Its a design pattern follow by iOS. Its a.......

Q20.  What architecture iOS follows ?


Q21.  What are collection methods ?

For objects that manage a collection of objects (each called an element of that collection).
For example: - (void)addElement:(elementType)anObj;
           - (void)removeElement:(elementType)anObj;
           - (NSArray *)elements;

Q22.  How to handle NSLog before release   ?


All The Best :)