object-c怎么在线程中显示图片 dispatch_async(dispatch_get_main_queue(), ^{ //do something in main_queue }); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 image已经构造出来了,直接在1楼提供的GCD里取ImageView并给它赋值就好了:dispatch_async(dispatch_get_main_queue(), ^{ imageView.image = MyImg;}); 也可以[myImageView perforSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntiDone:NO];然后重写imageView的drawInRect , 在这函数里画 现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;然后ViewController.m里面加上@synthesize MyImageView;然后在初始化的位置加上 MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; MyImageView.center = self.view.center; [self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{ MyImageView.image = MyImg;});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀? 现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;然后ViewController.m里面加上@synthesize MyImageView;然后在初始化的位置加上 MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; MyImageView.center = self.view.center; [self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{ MyImageView.image = MyImg;});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?有几个问题。你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:@synthesize MyImageView;MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];MyImageView.center = self.view.center;[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了? 现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;然后ViewController.m里面加上@synthesize MyImageView;然后在初始化的位置加上 MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; MyImageView.center = self.view.center; [self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{ MyImageView.image = MyImg;});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?你在storyboard中将UIImageView设置成了插座(IBOutlet)变量,那么就不需要再在代码中来实例化了。 MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; MyImageView.center = self.view.center; [self.view addSubview:MyImageView];上面的代码删除掉在viewDidload中视图的元素被渲染到屏幕中时,开启 一个异步线程来下载图片-(void)viewDidLoad { [super viewDidLoad]; ///////异步请求 NSString *pic_str = @"xxxxxxxx"; //////你的图片地址 NSURL * pic_url = [NSURL urlWithString:pic_str]; NSURLRequest *pic_request = [NSURLRequest requestWithURL:pic_url]; ///////发送异步请求 [NSURLConnection sendAsynchronousRequest:pic_request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse*urlResponce,NSData*data,NSError*error) { ////////回到UI线程更新 dispatch_async(dispatch_get_main_queue(), ^{ MyImg = [[UIImage alloc] initWithData: data ]; imageView.image = MyImg; }); }} 现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;然后ViewController.m里面加上@synthesize MyImageView;然后在初始化的位置加上 MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; MyImageView.center = self.view.center; [self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{ MyImageView.image = MyImg;});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?有几个问题。你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:@synthesize MyImageView;MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];MyImageView.center = self.view.center;[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了?唉,你们说的我都明白什么意思。可是我总共自学里一周object-c,懂的太少了。最后问一句就结贴,您说的这个“通知”,我需要搜哪些资料学习? 现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;然后ViewController.m里面加上@synthesize MyImageView;然后在初始化的位置加上 MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; MyImageView.center = self.view.center; [self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{ MyImageView.image = MyImg;});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?有几个问题。你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:@synthesize MyImageView;MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];MyImageView.center = self.view.center;[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了?唉,你们说的我都明白什么意思。可是我总共自学里一周object-c,懂的太少了。最后问一句就结贴,您说的这个“通知”,我需要搜哪些资料学习?他说的“通知” 是NSNotificationCenter. 其实像这种请求网络图片的需求,使用异步的方式是必须的手段,当异步线程下载完后,再抛回到UI主线程去更新UI,这是通用的做法。其它的方式只会增加复杂度。 现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;然后ViewController.m里面加上@synthesize MyImageView;然后在初始化的位置加上 MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; MyImageView.center = self.view.center; [self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{ MyImageView.image = MyImg;});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?有几个问题。你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:@synthesize MyImageView;MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];MyImageView.center = self.view.center;[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了?唉,你们说的我都明白什么意思。可是我总共自学里一周object-c,懂的太少了。最后问一句就结贴,您说的这个“通知”,我需要搜哪些资料学习?他说的“通知” 是NSNotificationCenter. 其实像这种请求网络图片的需求,使用异步的方式是必须的手段,当异步线程下载完后,再抛回到UI主线程去更新UI,这是通用的做法。其它的方式只会增加复杂度。非常感谢 把软件发布到ios deleverment 网站上,证书报错,,求解答 为什么运行时老是提示我在定义的uiview对象名面前加下划线_? iOS三种Json方法解析国家气象局API 引入C++项目的问题 bada上的json解析!!!!!!!!!! Iphone UIScrollView 的缩放问 录北京的IPHONE开发人员 求 C# 版 推送IOS消息源代码 ios 数据库处理部分 使用javascriptcore 框架后,UIWebView中页面跳转后,用JSExport绑定的方法无法调用 关于UITableView滑滚问题 PHP语言,在IOS开发的作用?
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image = MyImg;
});
现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,
在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,
ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;
然后ViewController.m里面加上
@synthesize MyImageView;
然后在初始化的位置加上
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{
MyImageView.image = MyImg;
});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?
现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,
在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,
ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;
然后ViewController.m里面加上
@synthesize MyImageView;
然后在初始化的位置加上
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{
MyImageView.image = MyImg;
});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?
有几个问题。
你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:
@synthesize MyImageView;
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。
不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了?
现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,
在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,
ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;
然后ViewController.m里面加上
@synthesize MyImageView;
然后在初始化的位置加上
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{
MyImageView.image = MyImg;
});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?
你在storyboard中将UIImageView设置成了插座(IBOutlet)变量,那么就不需要再在代码中来实例化了。
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];
上面的代码删除掉
在viewDidload中视图的元素被渲染到屏幕中时,开启 一个异步线程来下载图片
-(void)viewDidLoad {
[super viewDidLoad];
///////异步请求
NSString *pic_str = @"xxxxxxxx"; //////你的图片地址
NSURL * pic_url = [NSURL urlWithString:pic_str];
NSURLRequest *pic_request = [NSURLRequest requestWithURL:pic_url];
///////发送异步请求
[NSURLConnection sendAsynchronousRequest:pic_request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse*urlResponce,NSData*data,NSError*error) {
////////回到UI线程更新
dispatch_async(dispatch_get_main_queue(), ^{
MyImg = [[UIImage alloc] initWithData: data ];
imageView.image = MyImg;
});
}
}
现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,
在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,
ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;
然后ViewController.m里面加上
@synthesize MyImageView;
然后在初始化的位置加上
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{
MyImageView.image = MyImg;
});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?
有几个问题。
你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:
@synthesize MyImageView;
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。
不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了?唉,你们说的我都明白什么意思。可是我总共自学里一周object-c,懂的太少了。最后问一句就结贴,您说的这个“通知”,我需要搜哪些资料学习?
现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,
在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,
ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;
然后ViewController.m里面加上
@synthesize MyImageView;
然后在初始化的位置加上
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{
MyImageView.image = MyImg;
});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?
有几个问题。
你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:
@synthesize MyImageView;
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。
不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了?唉,你们说的我都明白什么意思。可是我总共自学里一周object-c,懂的太少了。最后问一句就结贴,您说的这个“通知”,我需要搜哪些资料学习?
他说的“通知” 是NSNotificationCenter. 其实像这种请求网络图片的需求,使用异步的方式是必须的手段,当异步线程下载完后,再抛回到UI主线程去更新UI,这是通用的做法。其它的方式只会增加复杂度。
现在是这样我这里是这样的:UIImage *MyImg = [[UIImage alloc] initWithData: data ];在一个C语言写的全局的线程函数里面,
在main.stotryboard里面拖了一个UIImageview控件。然后按住control,用鼠标拖动到ViewController头文件,
ViewController.h里面 @property (strong, nonatomic) IBOutlet UIImageView *MyImageView;
然后ViewController.m里面加上
@synthesize MyImageView;
然后在初始化的位置加上
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];我想问dispatch_async(dispatch_get_main_queue(), ^{
MyImageView.image = MyImg;
});该写在什么地方呀?如果是写在全局的线程函数的里面,MyImageView又不是全局的呀?
有几个问题。
你的UIImageView是在Storyboard里拖出来的,那直接连到VC上就可以了,.m中的这些代码不要写:
@synthesize MyImageView;
MyImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
MyImageView.center = self.view.center;
[self.view addSubview:MyImageView];另外,你说的对,ImageView不是全局的,也没必要是全局的,但你的线程是全局的,你应该在全局线程构造完一个Image之后,发出一个通知,以Image对参数,然后在VC初始化的时候监听这个通知,VC释放的时候取消监听,当收到通知的时候直接把Image赋值给ImageView就行了,不需要使用GCD。
不过你的线程与VC应该也不是完全独立的吧?不然线程在走的时候,没有VC的话,你Image岂不是白构造了?唉,你们说的我都明白什么意思。可是我总共自学里一周object-c,懂的太少了。最后问一句就结贴,您说的这个“通知”,我需要搜哪些资料学习?
他说的“通知” 是NSNotificationCenter. 其实像这种请求网络图片的需求,使用异步的方式是必须的手段,当异步线程下载完后,再抛回到UI主线程去更新UI,这是通用的做法。其它的方式只会增加复杂度。非常感谢