我知道如何在java中实现它,但我在objetice-c
中捣乱在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();
}
}
现在我在objective-c遇到了麻烦。前两个方面很容易用协议制作,但是当我想这样称呼时,没有任何反应
//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] alloc] init]在tableView中预先调用)
-(IBAction)runButton:(id)sender {
[myCar startCar];
}
答案 0 :(得分: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代码中,您需要从此行中删除星号:
id <Car> *myCar;
因为id
类型已经是指针(虽然我不认为这不是你问题的根源)。