我有以下代码:
@interface NeighborProfileViewController : UIViewController {
UIImageView * profPic;
UITextView * text;
UIButton * buzz;
NSString * uid;
NSMutableData *responseData;
NSDictionary * results;
}
@property (nonatomic, retain) IBOutlet UIImageView * profPic;
@property (nonatomic, retain) IBOutlet UITextView * text;
@property (nonatomic, retain) IBOutlet UIButton * buzz;
@property (nonatomic, retain) NSString * uid;
@end
以下是我在viewDidLoad
文件<{1}}上的内容
.m
我认为我通过@implementation NeighborProfileViewController
@synthesize uid;
@synthesize profPic;
@synthesize buzz;
@synthesize text;
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = //some URL to the picture;
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[[UIImage alloc] initWithData:data] autorelease];
self.profPic = [[UIImageView alloc] initWithImage: img];
}
正确连接了UIImageView
。我有一个从IB
到文件所有者的profPic的插座。我做错了什么?
答案 0 :(得分:13)
如果您要设置默认图片,那么在您致电self.profPic = [UIImageView]
后是否仍然可见,或者是否将其从屏幕上移除?
我认为当self.profPic
释放旧图像视图以将其替换为您刚刚创建的图像视图时会出现此问题。旧的UIImageView
实例以及您在IB中定义的所有属性可能会自动从超级视图中删除。这就是为什么你没有看到下载的图像。
如果您使用IB
创建UIImageView
,那么您不想创建新的ImageView并将其分配给profPic
(已经完全实例化UIImageView
})。尝试拨打[profPic setImage:img];
,这只会更改profPic
图片视图中的图片。
答案 1 :(得分:2)
@Equinox使用
[profPic setImage:img];
而不是
self.profPic = [[UIImageView alloc] initWithImage: img];
虽然使用自动释放不是问题。 你也可以这样做
UIImage *img = [[UIImage alloc] initWithData:data] ;
[profPic setImage:img];
[img release];
问题
self.profPic = [[UIImageView alloc] initWithImage: img];
您现在正在为profPic创建另一个内存位置,这意味着profPic将不再指向您的IB中的UIImageView