2014年11月30日日曜日

HTTPFileUpload

HTTPFileUploadを試させて頂くが、コンパイルエラーになる。

まず、HTTPFileUpload.hは、UIKitをインポートしないとUIImageが解決出来ない。

#import <UIKit/UIKit.h>

まぁこれは簡単だ。更に、HTTPFileUpload.hでもう一個ビルドエラーが。

"Existing instance variable 'delegate_' for property 'delegate' with  assign attribute must be __unsafe_unretained"

というエラーが出る。何のこっちゃ。どうも、Objective-Cでのメモリ管理に関連するらしい。ARC (Automatic Reference Counting)を使っている場合は問題が出るとか。とりあえず、id@propertyするなら@privateに書いちゃいかんって事らしい。

@interface HTTPFileUpload : NSObject
{
 @private
  id <HTTPFileUploadDelegate> delegate_; // ← つまりこれが問題

  NSMutableArray *postStrings_, *postImages_;
  NSMutableData *resultData_;
}
@property(nonatomic, assign) id <HTTPFileUploadDelegate> delegate;


とりあえず上の行を削除する。この後はHTTPFileUload.mでビルドエラーの嵐。

'release' is unavailable: not available in automatic reference counting mode

これもARCだな。ふむふむ。ARCは参照カウントをマニュアルで操作するreleaseだのretainだのを呼んだらいかんらしいからな。下記を参照させて頂く。
とりあえず、reelaseだのautoreleaseだのでエラーが出まくるので、そこを全部削除するとビルドは通った。あと、まだちょこちょこワーニングが。

Values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead

これ、言うとおりに[postData length]からunsigned longへのキャストを入れると、今度はフォーマットがintを要求しているのに何事ぢゃ!と怒るので、結局intへキャストするのが正解。postWithUriメソッドの最終行について下記のワーニングが出るが、とりあえず無視する。

Expression result unused

以上で一応エラーとワーニングの嵐は落ち着く。

0 件のコメント:

コメントを投稿