是否可以制作一个C++;类是Objc类的委托吗? 因为我需要继承C++中声明的一些处理程序作为超类,所以我必须声明我的类为 C++ >代码>类。但我也想让它成为两个Objective-C类的代表。在我的C++类中使用委托模式是不可避免的,但是我不知道如何使C++类成为Objtovi-C类的委托。
可能吗?还是有一种间接的方法来做?你需要知道委托是Objtovi.C中的返回数据,所以你用C++语言把类创建为超级类,它将返回数据。所以让我们来做。 首先,使用C++语言,表示C++类,然后添加Objtovi-C类。因此C++类和Objc类混合在一个XXX.H/XXX.mm中。p> 其次,您还需要委托,您只在其他objc类中使用objc类实现 查看它的测试代码是否可以制作一个C++;类是Objc类的委托吗? 因为我需要继承C++中声明的一些处理程序作为超类,所以我必须声明我的类为 C++ >代码>类。但我也想让它成为两个Objective-C类的代表。在我的C++类中使用委托模式是不可避免的,但是我不知道如何使C++类成为Objtovi-C类的委托。,c++,objective-c,C++,Objective C,可能吗?还是有一种间接的方法来做?你需要知道委托是Objtovi.C中的返回数据,所以你用C++语言把类创建为超级类,它将返回数据。所以让我们来做。 首先,使用C++语言,表示C++类,然后添加Objtovi-C类。因此C++类和Objc类混合在一个XXX.H/XXX.mm中。p> 其次,您还需要委托,您只在其他objc类中使用objc类实现 查看它的测试代码 TestViewController.h #import <UIKit/UIKit.h> class testC {
TestViewController.h
#import <UIKit/UIKit.h>
class testC
{
public:
static int useCMethod();
};
@protocol helloCDelegate<NSObject>
@optional
- (void)testDelegateTransformDataInTest:(int)testNum;
@end
@interface TestViewController : UIViewController
@property (nonatomic,weak) id<helloCDelegate> delegate;
@end
TestViewController.mm -- section operate implement code
int testC::useCMethod(){
return 3;
}
// you can use C++ method and C++ object in sample method.
// also it use delegate in here,so you can implement in other view controller.
- (void)tapBackTranformReturnData
{
int num = testC::useCMethod();
[self.delegate testDelegateTransformDataInTest:num];
}
TestViewController.h
#进口
类testC
{
公众:
静态int useCMethod();
};
@协议代理
@可选的
-(void)testDelegateTransformDataInTest:(int)testNum;
@结束
@接口TestViewController:UIViewController
@属性(非原子,弱)id委托;
@结束
TestViewController.mm--操作工具代码部分
int testC::useCMethod(){
返回3;
}
//可以在采样方法中使用C++方法和C++对象。
//此外,它在这里使用委托,所以您可以在其他视图控制器中实现。
-(无效)点击BackTransformReturnData
{
int num=testC::useCMethod();
[self.delegate testDelegateTransformDataInTest:num];
}
哦,最重要的一点是,必须将<代码> xxx .m>代码>文件改为<代码> xxx .mm < /C> >,这意味着Objy++可以使用C++语言和Objul-C.<
你需要这个功能吗?我希望帮助你。 你需要知道委托是Objtovi.C中的返回数据,所以你用C++语言创建类作为超级类,它将返回数据。所以让我们来做。 首先,使用C++语言,表示C++类,然后添加Objtovi-C类。因此C++类和Objc类混合在一个XXX.H/XXX.mm中。p> 其次,您还需要委托,您只在其他objc类中使用objc类实现 查看它的测试代码
TestViewController.h
#import <UIKit/UIKit.h>
class testC
{
public:
static int useCMethod();
};
@protocol helloCDelegate<NSObject>
@optional
- (void)testDelegateTransformDataInTest:(int)testNum;
@end
@interface TestViewController : UIViewController
@property (nonatomic,weak) id<helloCDelegate> delegate;
@end
TestViewController.mm -- section operate implement code
int testC::useCMethod(){
return 3;
}
// you can use C++ method and C++ object in sample method.
// also it use delegate in here,so you can implement in other view controller.
- (void)tapBackTranformReturnData
{
int num = testC::useCMethod();
[self.delegate testDelegateTransformDataInTest:num];
}
TestViewController.h
#进口
类testC
{
公众:
静态int useCMethod();
};
@协议代理
@可选的
-(void)testDelegateTransformDataInTest:(int)testNum;
@结束
@接口TestViewController:UIViewController
@属性(非原子,弱)id委托;
@结束
TestViewController.mm--操作工具代码部分
int testC::useCMethod(){
返回3;
}
//可以在采样方法中使用C++方法和C++对象。
//此外,它在这里使用委托,所以您可以在其他视图控制器中实现。
-(无效)点击BackTransformReturnData
{
int num=testC::useCMethod();
[self.delegate testDelegateTransformDataInTest:num];
}
哦,最重要的一点是,必须将<代码> xxx .m>代码>文件改为<代码> xxx .mm < /C> >,这意味着Objy++可以使用C++语言和Objul-C.<
你需要这个功能吗?我希望能帮助你。这里有一个快速而肮脏的例子 需要委托给C++的Objective-C类的接口和实现:
@interface MyClassOC : NSObject
@property id<MyDelegateProtocol> myDelegate;
-(void)doStuff;
@end
@implementation MyClassOC
-(void)doStuff {
if (self.myDelegate) {
[self.myDelegate performOperation];
}
}
@end
作为委托使用的C++类:
class MyDelegateCPP {
public:
void performOperation();
};
void MyDelegateCPP::performOperation() {
cout << "C++ delegate at work!\n";
}
这可用于以下方面:
MyDelegateOCPP * delegate = [[MyDelegateOCPP alloc] init];
MyClassOC * classOC = [[MyClassOC alloc] init];
classOC.myDelegate = delegate;
[classOC doStuff];
同样,这只是一个过于简单的草图,但希望它能给你一个想法。这里是一个快速而肮脏的例子 需要委托给C++的Objective-C类的接口和实现:
@interface MyClassOC : NSObject
@property id<MyDelegateProtocol> myDelegate;
-(void)doStuff;
@end
@implementation MyClassOC
-(void)doStuff {
if (self.myDelegate) {
[self.myDelegate performOperation];
}
}
@end
作为委托使用的C++类:
class MyDelegateCPP {
public:
void performOperation();
};
void MyDelegateCPP::performOperation() {
cout << "C++ delegate at work!\n";
}
这可用于以下方面:
MyDelegateOCPP * delegate = [[MyDelegateOCPP alloc] init];
MyClassOC * classOC = [[MyClassOC alloc] init];
classOC.myDelegate = delegate;
[classOC doStuff];
再次,这只是一个过于简化的草图,但希望它给你一个想法。
让C++类成为Objtovi-C类的委托,需要创建一个桥对象(ObjuleC类),当委托的方法被触发时,它是ObjtoVc对象和Clice C++方法的委托。为了使C++类成为Objtovi-C类的委托,需要创建一个桥对象(ObjuleC类),它是ObjuleC对象的委托,在委托委托方法被触发时调用C++方法。