What's the rest of the error message, and where in the code does it crash? The error message should say what the object and selector are.
PS: your app delegate looks strange. Your init method doesn't call "self=[super init]", and it does a lot of work that is usually put in applicationDidFinishLaunching instead.
I believe the other issue is here:
Code:
tempArray = [decoder decodeObjectForKey:@"smokeArray"];
[self setSmokeArray:tempArray];
When you encode and then decode a NSMutableArray, you get a
NSArray back. You probably fail when you try to send a method like "addObject:" to an array which is not mutable. You probably need this instead:
Code:
tempArray = [[decoder decodeObjectForKey:@"smokeArray"] mutableCopy];
[self setSmokeArray:tempArray];