1#import "LogItem.h" 2 3static NSString *defaultCategory = @"Some Incredibly Insightfull message"; 4 5@implementation LogItem 6 7- (void)encodeWithCoder:(NSCoder *)coder { 8 [coder encodeObject: [self time]]; 9 [coder encodeObject: [self first]]; 10 [coder encodeObject: [self second]]; 11 [coder encodeObject: [self message]]; 12} 13 14- (id)initWithCoder:(NSCoder *)coder { 15 // init variables in the same order as they were encoded 16 [self setTime: [coder decodeObject]]; 17 [self setFirst: [coder decodeObject]]; 18 [self setSecond: [coder decodeObject]]; 19 [self setMessage: [coder decodeObject]]; 20 return self; 21} 22 23 24+ (LogItem *)logItemWithValues:(UInt32)myTime:(UInt16)myFirst:(UInt16)mySecond:(NSString *)myMessage{ 25 // convenience method to create a new logItem with default 26 // test data given an amount 27 LogItem *newLogItem = [[LogItem alloc] init]; 28 [newLogItem autorelease]; 29 [newLogItem setTime: [NSNumber numberWithUnsignedLong:myTime]]; 30 [newLogItem setFirst: [NSNumber numberWithUnsignedShort:myFirst]]; 31 [newLogItem setSecond: [NSNumber numberWithUnsignedShort:mySecond]]; 32 [newLogItem setMessage: myMessage]; 33 return newLogItem; 34} 35 36+ (LogItem *)logItem { 37 return [[[LogItem alloc] init] autorelease]; 38} 39 40- (id)init { 41 [super init]; 42 // ensure amount is never nil 43 [self setTime: [NSNumber numberWithUnsignedLong:0]]; 44 [self setFirst: [NSNumber numberWithUnsignedShort:0]]; 45 [self setSecond: [NSNumber numberWithUnsignedShort:0]]; 46 [self setMessage: defaultCategory]; 47 return self; 48} 49 50- (NSNumber *)time { 51 return [[time copy] autorelease]; 52} 53 54- (void)setTime:(NSNumber *)value { 55 [value retain]; 56 [time release]; 57 time = value; 58} 59 60- (NSString *)message { 61 return [[message copy] autorelease]; 62} 63 64- (void)setMessage:(NSString *)value { 65 [value retain]; 66 [message release]; 67 message = value; 68} 69 70- (NSNumber *)first { 71 return [[first copy] autorelease]; 72} 73- (NSNumber *)second { 74 return [[second copy] autorelease]; 75} 76 77- (void)setFirst:(NSNumber *)value { 78 NSNumber *copy = [value copy]; 79 [first release]; 80 first = copy; 81} 82 83- (void)setSecond:(NSNumber *)value { 84 NSNumber *copy = [value copy]; 85 [second release]; 86 second = copy; 87} 88 89- (void)dealloc { 90 [self setTime:nil]; 91 [self setFirst:nil]; 92 [self setSecond:nil]; 93 [self setMessage:nil]; 94 [super dealloc]; 95} 96 97@end 98