2017-06-07 1 views
0

こんにちは私は自分のカスタムクラスを作りましたファイル:カスタムクラスのinit問題

-(id)init:(NSString*) strFilename withImageData:(NSData*) objImageData withUploadTaskDelegate:(id<NSURLSessionTaskDelegate>) objUploadTaskDelegate; 

しかし、私はこのようにそれを使用しようとすると:

UploadQueueCellData *objTest =[UploadQueueCellData init:strImageName withImageData:objData withUploadTaskDelegate:objUploadDelegate]; 

それは、このエラーを与える:

No known class method for selector 'init:withImageData:withUploadTaskDelegate:'

が、これは私の第3回日であるObjective Cのコードで開発しようと私は、私は何かが足りないんだと確信しているが、私は私は何を見つけることができていないようです間違っている?あなたがそれを使用する前にインスタンスを作成してきた、

をインスタンスメソッドの場合:

答えて

0

あなたinit方法は、例えば以下を確認して、インスタンスメソッドではなく、クラスメソッドです。クラスメソッドの場合

[[MyClass alloc] anInstanceMethod] 

を::インスタンスメソッドのために、MyClassの方法を呼び出すために

@interface MyClass : NSObject 

+ (void)aClassMethod; 
- (void)anInstanceMethod; 

@end 

[[UploadQueueCellData alloc] init:strImageName withImageData:objData withUploadTaskDelegate:objUploadDelegate] 

[MyClass aClassMethod] 

あなたのケースでは、これを行いますクラスメソッド

クラスメソッドはクラス全体に適用されます。 allocメソッドをチェックすると、メソッド宣言の前に+が付いたクラスメソッドです。クラスメソッドは、そのクラスの特定のインスタンスを作成するためにクラスに適用されるためです。

インスタンスメソッド

あなたは、そのインスタンスに、全体ではなくクラスに固有のクラスの特定のインスタンスを変更するためにインスタンスメソッドを使用します。たとえば、(メソッド宣言の前に - で示される)initは、通常はallocで作成された後にそのクラスのプロパティを変更するため、インスタンスメソッドです。

+0

私はあなたに私がここに示したものを適用しようとしましたが、それは働いているようです:)私はまだ理解していないと私はまだ理解していないので、私はしようとします。このallocが本当に意味するもの:)しかし、あなたの助けに感謝:) – Helbo

+0

@Helboハッピーコーディング:-) –

関連する問題