//
//  Moving_from_Manual_Reference_Counting_to_ARCAppDelegate.m
//  Moving from Manual Reference Counting to ARC
//
//  Created by Vandad Nahavandipoor on 25/07/2011.
//  Copyright 2011 Pixolity Ltd. All rights reserved.
//

#import "Moving_from_Manual_Reference_Counting_to_ARCAppDelegate.h"

@implementation Moving_from_Manual_Reference_Counting_to_ARCAppDelegate

@synthesize window = _window;
@synthesize string1;
@synthesize string2;

/* 1 */
//- (BOOL)            application:(UIApplication *)application 
//  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//  
//  self.string1 = @"Ciąg tekstowy 1";
//  self.string2 = self.string1;
//  self.string1 = nil;
//  
//  NSLog(@"Właściwość string2 = %@", self.string2);
//  
//  self.window = [[UIWindow alloc] initWithFrame:
//                 [[UIScreen mainScreen] bounds]];
//  
//  self.window.backgroundColor = [UIColor whiteColor];
//  [self.window makeKeyAndVisible];
//  return YES;
//}

/* 2 */
//- (BOOL)            application:(UIApplication *)application 
//  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//  
//  /* Wszystkie zmienne lokalne są domyślnie definiowane jako strong, tutaj to jedynie podkreślamy.
// Naprawdę nie trzeba używać atrybutu __strong dla pierwszej zmiennej, ale robimy to, aby
// wszystko było jasne. To nie jest błędem. */

//  __strong NSString *yourString = @"Dowolny ciąg tekstowy";
//  __weak   NSString *myString = yourString;
//  yourString = nil;
//  __unsafe_unretained NSString *theirString = myString;
//  
//  /* Na tym etapie wszystkie wskaźniki będą miały wartość nil. */
//  
//  self.window = [[UIWindow alloc] initWithFrame:
//                 [[UIScreen mainScreen] bounds]];
//  
//  self.window.backgroundColor = [UIColor whiteColor];
//  [self.window makeKeyAndVisible];
//  return YES;
//}

/* 3 */
//- (BOOL)            application:(UIApplication *)application 
//  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//  
//  self.string1 = [[NSString alloc] initWithUTF8String:"Ciąg tekstowy 1"];
//  self.string2 = self.string1;
//  self.string1 = nil;
//  
//  /* Na tym etapie wszystkie wskaźniki będą miały wartość nil. */
//  
//  self.window = [[UIWindow alloc] initWithFrame:
//                 [[UIScreen mainScreen] bounds]];
//  
//  self.window.backgroundColor = [UIColor whiteColor];
//  [self.window makeKeyAndVisible];
//  return YES;
//}
//
//- (void)applicationDidEnterBackground:(UIApplication *)application{
//  NSLog(@"Właściwość string2 = %@", self.string2);
//}

/* 4 */
- (void) generateErrorInVariable:(__autoreleasing NSError **)paramError{
  
  NSArray *objects = [[NSArray alloc] initWithObjects:@"Prosty błąd", nil];
  
  NSArray *keys = 
  [[NSArray alloc] initWithObjects:NSLocalizedDescriptionKey, nil];
  
  NSDictionary *errorDictionary = [[NSDictionary alloc] initWithObjects:objects
                                                                forKeys:keys];
  
  *paramError = [[NSError alloc] initWithDomain:@"MojaAplikacja"
                                           code:1
                                       userInfo:errorDictionary];
}

- (BOOL)            application:(UIApplication *)application 
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
  
  NSError *error = nil;
  [self generateErrorInVariable:&error];
  
  NSLog(@"Błąd = %@", error);
  
  self.window = [[UIWindow alloc] initWithFrame:
                 [[UIScreen mainScreen] bounds]];
  
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];
  return YES;
}

@end
