自定义类初始化问题

时间:2017-06-07 08:24:49

标签: ios objective-c

您好,我已经制作了自己的自定义课程:

使用此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代码,所以我确定我错过了一些东西,但我似乎无法发现我做错了什么?

1 个答案:

答案 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创建该类之后,通常会修改该类的属性。