フォームをアップロードするAFNetworking
次の例の場合:ARC問題:セレクタに対する既知インスタンスメソッド 'appendPartWithFileData:MIMEタイプ:名:'
NSURL *url = [NSURL URLWithString:@"https://www.example.com/"];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:url];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
keyField.text, @"key",
valField.text, @"val",
nil];
NSData *imageData = UIImagePNGRepresentation(image);
NSURLRequest *request = [client multipartFormRequestWithMethod:@"POST"
path:@"/upload"
parameters:params
constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData
mimeType:@"image/png"
name:@"avatar"];
}];
コンパイルエラーを返し:
ARC Issue: No known instance method for selector 'appendPartWithFileData:mimeType:name:'
どのように私が直します?
は 'appendPartWithFileData'がAFHTTPClient.h''である参照してください。 – ohho
正しい署名がありますか?私が見つけたすべてのバージョンのヘッダーには、名前、ファイル名、およびMIMEを含む長いバージョンが含まれています。コンパイラと同じヘッダーを見ていますか? – zoul
これはARCの問題です。なぜなら、ARCがなければ、コンパイラが知らないコールセレクタがうまくいくからです。誰かがセレクタを実装している限り、実行時にも問題はありません。あなたは警告を受ける。しかし、ARCでは、コンパイラはメソッドのプロトタイプを参照して、どのように呼び出すべきかを決定するために、__autoreleasingまたは他の属性が付加されているかどうかを調べる必要があります。これらのルールを見ることなく、コンパイラは代わりにエラーを呼び出します。 –