您好,我已经制作了自己的自定义课程:
使用此init方法:
-(id)init:(NSString*) strFilename withImageData:(NSData*) objImageData withUploadTaskDelegate:(id<NSURLSessionTaskDelegate>) objUploadTaskDelegate
{
filename = strFilename;
uploadTaskDelegate = objUploadTaskDelegate;
imageData = objImageData;
return self;
}
我确保.h文件也有此init文件的定义:
-(id)init:(NSString*) strFilename withImageData:(NSData*) objImageData withUploadTaskDelegate:(id<NSURLSessionTaskDelegate>) objUploadTaskDelegate;
然而,当我尝试使用它时:
UploadQueueCellData *objTest =[UploadQueueCellData init:strImageName withImageData:objData withUploadTaskDelegate:objUploadDelegate];
它给出了这个错误:
没有已知的选择器类方法 &#39;初始化:withImageData:withUploadTaskDelegate:&#39;
这是我第3天尝试开发客观的c代码,所以我确定我错过了一些东西,但我似乎无法发现我做错了什么?
答案 0 :(得分:0)
您的init
方法是实例方法,而不是类方法,请查看以下示例:
例如,您需要在使用之前创建实例。
@interface MyClass : NSObject
+ (void)aClassMethod;
- (void)anInstanceMethod;
@end
调用MyClass的方法,例如方法:
[[MyClass alloc] anInstanceMethod]
对于类方法:
[MyClass aClassMethod]
在你的情况下这样做:
[[UploadQueueCellData alloc] init:strImageName withImageData:objData withUploadTaskDelegate:objUploadDelegate]
课程方法
类方法作为一个整体应用于类。如果检查alloc方法,那就是在方法声明之前用+表示的类方法。它是一个类方法,因为它应用于类来创建该类的特定实例。
实例方法
您使用实例方法来修改该实例唯一的特定类实例,而不是整个类。 init(例如,在方法声明之前用 - 表示)是一个实例方法,因为在使用alloc创建该类之后,通常会修改该类的属性。