2011-11-29 23 views
5

を理解していないこれは私が取得エラーです:は、パラメータを初期化できませんし、私はなぜ

Cannot initialize a parameter of type 'id<ZXingDelegate>' 
with an lvalue of type 'FirstViewController *const __strong' 

のコード行から:

ZXingWidgetController *widController = 
    [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES 
                  OneDMode:NO]; 

どのように私はこの問題を解決することができますか?

+0

ARC:

@interface FirstViewController : UIViewController <ZXingDelegate> 

そして、あなたの.mファイルでは、このようなものを?その後、ブリッジキャストが必要になります。 – Macmade

+0

私はそれをどのようにすることができるか少し説明できますか?そしてはい、ARC – Pillblast

+0

気にしないで、私はそれをgoogledし、ブリジットキャストが何であるか知りました。答えをありがとう、私は答えとしてコメントを選ぶことができたらいいと思う – Pillblast

答えて

5

Macmadeのコメントのおかげで、私は問題を解決することができました。私はこのように書いたはずです。

ZXingWidgetController *widController = 
    [[ZXingWidgetController alloc] initWithDelegate:***(id)** self showCancel:YES 
                    OneDMode:NO]; 

ここで(id)は、彼が話していたブリッジキャストです。

1

この問題のコードオフ使用この行を

ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:(id<ZXingDelegate>)self showCancel:YES OneDMode:NO]; 
0

私はこれを正しく理解していれば、問題はあなたのFirstViewControllerクラスは、このように、問題をZXingDelegateインターフェースクラスを定義していない、むしろあなたは、ブリッジ・キャストを必要とすることではありません。

ZXingDelegateは、継承するクラスによって定義されなければならない関数(インターフェイス)を宣言する(@オプションでない限り)インターフェイスクラス(プロトコルまたはデリゲート)です。 C++の純粋仮想(抽象)クラスのようなもの。

つまり、あなたのヘッダファイルでこのような何か必要があると思います:私は推測

@implementation FirstViewController 

//...... 
-(void) SomeFunctionThat_ZXingDelegate_declares 
{ 
    // .... do something here.... 
} 
//...... 


@end 
関連する問題