2011-08-03 18 views
0

私はJavaでそれを行う方法を知っているが、イムstubling Javaでいくつかのプロトコルの問題

私はこのようなインタフェースを持っています:

public interface Car { 
    public void startCar(); 
} 

、これを実装したクラスをインターフェース:

public class SomeCarImpl implements Car { 
    public void startCar() { 
     System.out.println("starting the car..."); 
    } 
} 

、今私は私のメインのクラスで、これにできるようになる

public void MainClass { 
    public static void main(String [] args) { 
     Car myCar = new SomeCarImpl(); 
     car.startCar(); 
    } 
} 

ここで、私は客観的に困っています。最初の二つのことを簡単なプロトコルで作られたが、私はこのようにそれを呼び出したいとき、何も私はあなたが...私の問題を理解し、

// :-)私を助けることができると思います

//header 
id <Car> *myCar; 

//instance 
myCar = [[SomeCarImpl alloc] init]; 

//calling and nothing happens 
[myCar startCar]; 

を起こりませんしています編集ここでコード最終的

@interface SomeCarImpl:NSObject<Car> 
@end 

@implementation SomeCarImpl 
-(void)startCar{ 
NSLog(@"run"); 
} 
@end 

@protocol Car <NSObject> 
-(void)startCar; 
@end 



@interface DetailViewController:UIViewController<UISplitViewControllerDelegate> { 
IBOutlet UIButton *runButton; 
id<Car> myCar; 
} 
@property(strong, nonatomic)IBOutlet UIButton *runButton; 
@property(strong, nonatomic)id<Car> myCar; 
@end 

及び(detailViewController.myCar =] [SomeCarImpl]アロケーション] INIT事前のtableViewに呼ばれる)

-(IBAction)runButton:(id)sender { 
[myCar startCar]; 
} 
ありますタイプ idがすでにあるので

id <Car> *myCar; 

+4

目的のCコードを見てみましょう - Javaコードは関係ありません – Mark

+0

いくつかのブレークポイントを設定しましたか? – Tomen

答えて

3

あなたのJavaコードが漠然とこのようなものに変換します:

//public interface Car { 
// public void startCar(); 
//} 

@protocol Car 
- (void)startCar; 
@end 

//public class SomeCarImpl implements Car { 
// public void startCar() { 
//  System.out.println("starting the car..."); 
// } 
//} 

@interface SomeCarImpl : NSObject<Car> 

@end 

@implementation SomeCarImpl 

- (void)startCar { 
    NSLog(@"starting the car..."); 
} 

@end 

// Car myCar = new SomeCarImpl(); 
// car.startCar(); 
id<Car> myCar = [[SomeCarImpl alloc] init]; 
[myCar startCar]; 

あなたにObjCのコードでは、あなたがこの行からアスタリスクを削除する必要がありますポインタ(私はあなたの問題の根源ではないとは思わないが)。

+0

は本当になぜそれがうまくいかなかったのか分かりませんが、今はeverythingsがうまくいきます...おそらくxcode 4.2の問題;-)たくさんのthx – gabac