111*_*110 1 iphone inheritance objective-c uiimage
我从UIImage创建了类ChImage
@interface ChImage : UIImage {
@public
int ChannelId;
NSString *ChannelName;
NSString *Description;
}
@property(nonatomic, retain) NSString *ChannelName;
@property(nonatomic, retain) NSString *Description;
@end
@implementation ChImage
@synthesize ChannelName;
@synthesize Description;
@end
Run Code Online (Sandbox Code Playgroud)
并在代码中使用它:
ChImage *cho = [ChImage imageNamed:img];
cho = [ChImage imageNamed:img];
cho.ChannelName = @"something here...";
Run Code Online (Sandbox Code Playgroud)
在行cho.ChannelName应用程序中断.我需要扩展UIImage,因为我需要在该类中有一些额外的属性,但我不知道我做错了什么?
此外,当我尝试从UIImageView获取图像时,我收到了错误.我不知道这是否有上层问题:
UIImageView *iw = (UIImageView*) sender;
ChImage *im = (ChImage*) iw.image;
Run Code Online (Sandbox Code Playgroud)
我只是尝试转换代码的另一部分,它的工作原理.问题必须在点击处理方法中.这是方法:
- (void)imageTapped:(UIGestureRecognizer *)sender
{
UIImageView *iw = (UIImageView*) sender;
ChImage *im = (ChImage*) iw.image;
NSLog(im.ChannelName);
}
Run Code Online (Sandbox Code Playgroud)
这是一个uiscrollview,里面的图像是我如何将点击事件附加到每个图像:
for (imageToAdd in arrayOfImages)
{
UIImageView *temp = [[UIImageView alloc] initWithImage:imageToAdd];
temp.frame = CGRectMake(x, y, 29, 29);
temp.userInteractionEnabled = YES;
x += 29;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
[temp addGestureRecognizer:tap];
[scrollView addSubview:temp];
}
Run Code Online (Sandbox Code Playgroud)
不推荐使用子类UIImage
,它是一个OO层,CGImageRef
并且涉及很多魔法.
您可以创建一个包装类,并执行has-a关系而不是is-a关系.在你的情况下,这似乎是一个更好的方法.
像这样:
@interface Channel : NSObject {
@private
NSString* _name;
NSString* _description;
UIImage* _image;
}
// The rest…
Run Code Online (Sandbox Code Playgroud)
您应该更改名称,description
因为它会与之冲突-[NSObject description]
.
归档时间: |
|
查看次数: |
1304 次 |
最近记录: |