-(void)viewWillDraw {
NSURL *artistImageURL = [NSURL URLWithString:@"http://site.ru/ParseDataField/kiss.php?image"];
NSImage *artistImage = [[NSImage alloc] initWithContentsOfURL:artistImageURL];
[dj setImage:artistImage];
dispatch_queue_t queue = dispatch_get_global_queue(0,0);
dispatch_async(queue, ^{
NSError* error = nil;
NSString* text = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://site.ru/ParseDataField/kiss.php?artist"]
encoding:NSASCIIStringEncoding
error:&error];
dispatch_async(dispatch_get_main_queue(), ^{
[labelName setStringValue:text];
});
});
}
答案 0 :(得分:0)
您应该考虑将此代码置于除-viewWillDraw
之外的其他位置。在某些情况下,对于同一NSView
,可以多次调用此例程,更重要的是,您需要调用[super viewWillDraw]
以确保事物实际绘制正确(如果在视图中绘制了任何内容) )。
对于定期更新(例如每10秒),您应该考虑使用NSTimer
来触发下一个对象的检索。
至于为什么没有正确绘制图像的一般问题,您应该考虑将图像检索和绘图代码放在与标签检索和绘图代码相同的结构中。这会在[dj setImage: artistImage]
链之外进行viewWillDraw
方法调用,这可能会导致一些困难。