This repository was archived by the owner on Nov 6, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathNibwareLog.m
More file actions
126 lines (91 loc) · 2.76 KB
/
NibwareLog.m
File metadata and controls
126 lines (91 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//
// NibwareLog.m
// pingle
//
// Created by Robert Sanders on 9/22/08.
// Copyright 2008 ViTrue, Inc.. All rights reserved.
//
#import "NibwareLog.h"
#undef NSLog
@implementation NibwareLog
@synthesize maxMessages, messages, doNotify, doArchive;
#pragma mark Overhead methods
+ (NibwareLog *) singleton {
static NibwareLog *sharedSingleton;
@synchronized(self)
{
if (!sharedSingleton)
sharedSingleton = [[NibwareLog alloc] init];
return sharedSingleton;
}
// shutup Xcode
return sharedSingleton;
}
- (NibwareLog *) init {
[super init];
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(lowmemNotification:)
name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
self.messages = [[NSMutableArray alloc] init];
self.doNotify = NO;
self.doArchive = NO;
return self;
}
- (void) dealloc {
self.messages = Nil;
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center removeObserver:self];
[super dealloc];
}
#pragma mark maintenance
- (void) lowmemNotification:(NSNotification*)notification
{
[self.messages removeAllObjects];
}
#pragma mark Useful Methods
- (void) log:(NSString *)message {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if (doArchive) {
@synchronized (messages)
{
[[self messages] addObject:message];
}
}
NSLog(message);
if (doNotify) {
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"];
[center postNotificationName:NIBWARE_NOTIFICATION_LOG object:self userInfo:userInfo];
}
[pool release];
}
- (void) logWithFormat:(NSString *)format, ... {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
va_list ap;
va_start(ap, format);
NSString *result = [[NSString alloc] initWithFormat:format arguments:ap];
va_end(ap);
[self log:result];
[result release];
[pool release];
}
- (void) logWithFormat:(NSString *)format arguments:(va_list) arguments {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *result = [[NSString alloc] initWithFormat:format arguments:arguments];
[self log:result];
[result release];
[pool release];
}
@end
void NWLog(NSString *format, ...)
{
va_list ap;
NSString *format2 = [@"%s: " stringByAppendingString:format];
va_start(ap, format);
[[NibwareLog singleton] logWithFormat:format2 arguments:ap];
va_end(ap);
}
void NullLog(NSString *format, ...)
{
// do nothing
}