//
// SharedDBManager.h
// ClassVarTest
//
// Created by Ashok Menon on 26/05/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
}
-(id)init;
-(void)instanceAddsRecord:(id)obj;
-(id)instanceReturnsObjectAtIndex:(NSUInteger)index;
-(int)instanceReturnsInstanceCount;
+(void)initializeSharedDB;
+(id)returnObjectAtIndex:(NSUInteger)index;
+(int)instanceCount;
+(void)addRecord:(id)obj;
-(void)dealloc;
+(void)purgeSharedDB;
+(void)reInitializeSharedDB;
@end
//
// SharedDBManager.m
// ClassVarTest
//
// Created by Ashok Menon on 26/05/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "SharedDBManager.h"
static int count;
@implementation SharedDBManager
-(id)init {
if (self = [super init]) {
count ++;
}
return self;
}
-(void)instanceAddsRecord:(id)obj {
[SharedDBManager addRecord:obj];
}
-(id)instanceReturnsObjectAtIndex:(NSUInteger)index {
return [SharedDBManager returnObjectAtIndex:index];
}
-(int)instanceReturnsInstanceCount {
return count;
}
+(void)initializeSharedDB{
count = 0;
}
+(id)returnObjectAtIndex:(NSUInteger)index {
return [SharedDB objectAtIndex:index];
}
+(int)instanceCount {
return count;
}
+(void)addRecord:(id)obj {
[SharedDB addObject:obj];
}
-(void)dealloc {
count--;
[super dealloc];
}
+(void)purgeSharedDB {
SharedDB = nil;
}
+(void)reInitializeSharedDB {
[SharedDBManager purgeSharedDB];
}
@end
//
// ClassOne.h
// ClassVarTest
//
// Created by Ashok Menon on 26/05/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@class SharedDBManager;
SharedDBManager *dbManager;
}
@property (nonatomic, retain) SharedDBManager *dbManager;
-(id)init;
-(void)dealloc;
@end
//
// ClassOne.m
// ClassVarTest
//
// Created by Ashok Menon on 26/05/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "ClassOne.h"
#import "SharedDBManager.h"
@implementation ClassOne
@synthesize dbManager;
-(id)init {
if (self = [super init]) {
dbManager = [[SharedDBManager alloc] init];
stringWithFormat:@"Added from ClassOne"];
[dbManager instanceAddsRecord:record];
[record release];
}
return self;
}
-(void)dealloc {
[dbManager release];
[super dealloc];
}
@end
//
// ClassOne.h
// ClassVarTest
//
// Created by Ashok Menon on 26/05/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@class SharedDBManager;
SharedDBManager *dbManager;
}
@property (nonatomic, retain) SharedDBManager *dbManager;
-(id)init;
-(void)dealloc;
@end
//
// ClassOne.m
// ClassVarTest
//
// Created by Ashok Menon on 26/05/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "ClassTwo.h"
#import "SharedDBManager.h"
@implementation ClassTwo
@synthesize dbManager;
-(id)init {
if (self = [super init]) {
dbManager = [[SharedDBManager alloc] init];
stringWithFormat:@"Added from ClassTwo"];
[dbManager instanceAddsRecord:record];
[record release];
}
return self;
}
-(void)dealloc {
[dbManager release];
[super dealloc];
}
@end
#import <Foundation/Foundation.h>
#import "SharedDBManager.h"
#import "ClassOne.h"
#import "ClassTwo.h"
int main (int argc, const char * argv[]) {
[SharedDBManager initializeSharedDB];
ClassOne *classA = [[ClassOne alloc] init];
ClassTwo *classB = [[ClassTwo alloc] init];
NSLog(@"Instances of SharedDB: %d", [SharedDBManager instanceCount]);
NSLog(@"Object Created by ClassOne, Accessed by ClassOne: %@", [classA.dbManager instanceReturnsObjectAtIndex:0]);
NSLog(@"Object Created by ClassTwo, Accessed by ClassTwo: %@", [classB.dbManager instanceReturnsObjectAtIndex:1]);
NSLog(@"Object Created by ClassOne, Accessed by Class Two: %@", [classB.dbManager instanceReturnsObjectAtIndex:0]);
NSLog(@"Object Created by ClassTwo, Accessed by Class One: %@", [classA.dbManager instanceReturnsObjectAtIndex:1]);
NSLog(@"Object Created by ClassOne, Accessed by SharedDBManager: %@", [SharedDBManager returnObjectAtIndex:0]);
NSLog(@"Object Created by ClassTwo, Accessed by SharedDBManager: %@", [SharedDBManager returnObjectAtIndex:1]);
[SharedDBManager reInitializeSharedDB];
[SharedDBManager addRecord:@"First Record, Created by SharedDBManager"];
NSLog(@"Object Created by SharedDBManager, Accessed by Class One: %@", [classA.dbManager instanceReturnsObjectAtIndex:0]);
[classA release];
[classB release];
NSLog(@"Instance Count: %d", [SharedDBManager instanceCount]);
[pool drain];
return 0;
}