Macos 如何在OS X应用程序中从URL更新图像?

Macos 如何在OS X应用程序中从URL更新图像?,macos,nsimage,Macos,Nsimage,我有一些问题。所以我有代码可以从php中更新歌曲名称和图片。歌曲名称工作,也更新了,但图片不工作,在php文件中所有的工作,但在我的项目-没有。如何使更新图片从url后10秒为例。谢谢 -(void)viewWillDraw { NSURL *artistImageURL = [NSURL URLWithString:@"http://site.ru/ParseDataField/kiss.php?image"]; NSImage *artistImage = [[NSIma

我有一些问题。所以我有代码可以从php中更新歌曲名称和图片。歌曲名称工作,也更新了,但图片不工作,在php文件中所有的工作,但在我的项目-没有。如何使更新图片从url后10秒为例。谢谢

-(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];


        });
    });
}

你应该考虑把这个代码放在除<代码>之外的地方——VIEW WRAW绘制< /代码>。在某些情况下,可以为同一个

NSView
多次调用此例程,更重要的是,您需要调用
[super viewWillDraw]
,以确保实际绘制正确(如果视图本身绘制了任何内容)

周期性更新(如每10秒),你应该考虑使用<代码> NSTIMER 来触发对下一个对象的检索。p>


至于为什么你的图像没有被正确绘制的一般问题,你应该考虑把图像检索和绘图代码和标签检索和绘图代码放在一个相同的结构中。这将获得
[dj setImage:artistImage]
方法调用,该调用位于
视图willdraw
链之外,这可能会在此处造成一些困难

不是“在Xcode中”。Xcode是一个IDE,您不能修改它。我假设您希望在OS X应用程序中执行此操作?当我编写计时器代码NSTimer*t=[NSTimer scheduledTimerWithTimeInterval:0.40目标:自选择器:@selector(更新:)用户信息:无重复:否];我的应用程序运行非常缓慢,在我的应用程序关闭后会出现一些错误…在你的
更新:
例程中,你可能会做很多变化。正如您所写的那样,您正在为计时器添加一个.4秒的延迟,因此这可能是部分延迟,服务器的响应也可能是这样。希望您不是从
viewWillDraw
的内部调用
NSTimer
,因为这与在
viewWillDraw
中执行工作有类似的问题。