【发布时间】:2012-08-22 21:03:37
【问题描述】:
我有一个带有静态 NSStatusItem 和 NSStream 客户端的 Singleton 类。每当我在 Stream 中收到一条消息时,我都会将它传递给另一个线程以更改 NSStatusItem 工具提示。
case NSStreamEventHasBytesAvailable:
{
if(stream == inputStream)
{
//InputStream ready
uint8_t buf[1024];
unsigned int len = 0;
len = [inputStream read:buf maxLength:1024];
if(len > 0)
{
NSMutableData* data=[[NSMutableData alloc] initWithLength:0];
[data appendBytes: (const void *)buf length:len];
NSString *msgRcvd = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"Message Recieved in StreamUtil ::: %@",msgRcvd);
[self ProcessMessage:msgRcvd];
[data release];
[msgRcvd release];
}
}
break;
}
@implementation SBNSStatusItem
static SBNSStatusItem *sbNSStatusItem = NULL;
+(SBNSStatusItem *) GetSBNSStatusItem
{
@synchronized(self)
{
if (sbNSStatusItem== NULL)
{
sbNSStatusItem= [[self alloc] init];
}
}
return(sbNSStatusItem);
}
-(void) CreateNSStatusItem
{
// Initalization of NSStatusItem with NSMenu and Image setting
}
-(void) SetToolTip:(NSString *) toolTip
{
NSLog(@"%@",toolTip); // Shows Correct Message
[statusItem setToolTip:toolTip]; // But the ToolTip has some junk at the end of ori msg
//[toolTip release]; // EXC_BAD_ACCESS
}
@end
现在,来自 StreanUtil 的 Thread 调用带有要设置的消息的 setToolTip。但在 2 或 3 次调用后,工具提示开始在原始工具提示消息的末尾显示一些垃圾文本。
我在这里做错了什么?
【问题讨论】:
-
次要要点: 1. 不要以
get开头您的getter 方法名称,Cocoa 有不同的约定。 2. 方法名以小写字母开头,不要大写。
标签: objective-c memory-management nsstring nsstatusitem