【发布时间】:2014-12-08 02:45:11
【问题描述】:
我创建了一个名为 VJSessionTask 的自定义 NSURLSessionDownloadTask,并且我刚刚添加了一些自定义内容,例如 type (enum) 和 自定义对象(id):
@interface VJSessionTask : NSURLSessionDownloadTask
typedef enum types
{
LS, LSH, DL, UL, RM, TH
} type;
@property enum types type;
@property (strong, nonatomic) id customObject;
@property (strong, nonatomic) NSString *progressNotif;
@property (strong, nonatomic) NSString *doneNotif;
@property (strong, nonatomic) NSURL *tmpFile;
@end
当我这样做时:
VJSessionTask *taskSession = (VJSessionTask *)[self.prioritySession downloadTaskWithRequest:listFileRequest];
// init taskSession with its type
taskSession.type = LS;
我收到此错误:
-[__NSCFLocalDownloadTask setType:]: unrecognized selector sent to instance 0x1556198f0
然后我来找你,因为我不明白或者我不知道该怎么做...... 提前谢谢你;)
【问题讨论】:
-
强制转换不会改变
downloadTaskWithRequest实际实例化的对象类型。它只告诉编译器您认为它是什么类(从而控制您可能会或可能不会收到的编译时错误/警告)。因此,尽管有你的演员,标准的downloadTaskWithRequest仍然实例化NSURLSessionDownloadTask。 -
好的!我明白了,谢谢@Rob ;)
标签: objective-c inheritance casting nsurlsession