2011-11-29 30 views
5

Đây là lỗi tôi nhận được:Không thể khởi tạo tham số và tôi không hiểu tại sao

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

Từ dòng mã này:

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

Làm thế nào tôi có thể giải quyết này?

+0

ARC tôi đoán? Sau đó, bạn sẽ cần một diễn viên bắc cầu. – Macmade

+0

Bạn có thể giải thích một chút về cách tôi có thể làm điều đó không? Và có, ARC – Pillblast

+0

Nevermind, tôi googled nó và tìm ra những gì một diễn viên bridget là. Cảm ơn bạn rất nhiều vì câu trả lời, tôi ước tôi có thể chọn nhận xét làm câu trả lời – Pillblast

Trả lời

5

Cảm ơn nhận xét của Macmade Tôi đã giải quyết được vấn đề. Tôi nên viết theo cách này:

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

Trường hợp (id) là cầu nối mà anh ta đang nói đến.

1

sử dụng dòng này ra mã cho vấn đề này

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

Nếu tôi hiểu được điều này một cách chính xác, vấn đề không phải là bạn cần cast cầu nối, chứ không phải lớp FirstViewController của bạn không được xác định lớp giao diện ZXingDelegate, do đó vấn đề.

ZXingDelegate là (dựa trên tên tôi đoán) lớp giao diện (giao thức hoặc đại biểu) khai báo hàm (giao diện) phải được xác định bởi lớp thừa kế nó (trừ khi chúng là @optional). Một cái gì đó giống như các lớp thuần túy (trừu tượng) trong C++.

Vì vậy, bạn sẽ cần một cái gì đó trong tập tin của bạn tiêu đề như thế này:

@interface FirstViewController : UIViewController <ZXingDelegate> 

Và trong file .m của bạn, một cái gì đó như thế này:

@implementation FirstViewController 

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


@end 
Các vấn đề liên quan