2013-10-14 23 views
0

我是新來的目標C和試圖實現異議(依賴注入器)。使用異議協議獲取對象的實例

但其下方不工作的代碼我使用

My Protocol File 
#import <Foundation/Foundation.h> 

@protocol InfoquestProtocolTest <NSObject> 
-(void):nothing; 
@end 

My .h file is below 
#import <Foundation/Foundation.h> 
# import "InfoquestProtocolTest.h" 


@interface InfoquestImplementation : NSObject<InfoquestProtocolTest> 



@end 

my .m file implementing protocol 


#import "InfoquestImplementation.h" 

@implementation InfoquestImplementation 
-(void):nothing{} 
@end 

Code for module file of objection 

#import "InfoquestTestConf.h" 
#import <Objection/Objection.h> 
#import "InfoquestViewController.h" 
#import "InfoquestImplementation.h" 
@implementation InfoquestTestConf 
-(void)configure 
{ 

    [self bindClass:[InfoquestImplementation class] toProtocol:@protocol(InfoquestProtocolTest)]; 
} 
@end 

Code for getting object from objection 

    JSObjectionInjector *injector = [JSObjection createInjector]; 
    [JSObjection setDefaultInjector:injector]; 
    InfoquestTestConf *Module = [[InfoquestTestConf alloc] init]; 
    [injector withModule: Module]; 
    id<InfoquestProtocolTest> testing2 = [injector getObject:[@protocol(InfoquestProtocolTest)]; 

但是當我嘗試使用[testing2沒什麼]調用;我收到錯誤,自動完成不會顯示任何內容。

感謝 拉夫

回答

3

你有一個語法錯誤:

,就應該替換:

-(void):nothing; 

-(void)nothing; 
0

因此使用自定義的代表。所以首先你必須把委託設置到你的類中,你正在實現你的協議的方法。

+0

請解釋一點,我在自定義委託中沒有發言權,我知道委託人,因爲他們在tableviewcontroller中實現。 – user1394622

+0

自定義委託沒有任何意義,只是您正在使用協議中的define方法編寫自己的委託。而且當你在你的協議中定義方法時,你必須在你想要使用的另一個類中實現相同的功能 –

+0

http://stackoverflow.com/questions/645449/how-to-use-custom-delegates-in- objective-c請點擊此鏈接 –

1

這裏是你的syntax.please變更的錯誤:

-(void):nothing; 

至:

-(void)nothing;