//------------------------------------------------ --------------------
更新:我搞砸了。我在我的 AppDelegate->onApplicationWillResignActive 中直接调用了 openfeint,这导致了编译器 C++ 错误。
我的请求,如果有人想尝试同样的事情,单身人士确实可以工作。只要确保在 .m 文件中包含头文件,而不是头文件。
//------------------------------------------------ --------------------
我正在构建一个 iPhone 应用程序,并使用用 C++ 编写的 Openfeint SDK/Library/Framework (??)。
我想知道,是否可以编写一个与 C++ 接口的类,这样我就不必将我的 ObjC 类更改为 .mm 文件。
我尝试创建一个单例,希望可以将它的标头包含在普通 .m 文件中,但这不起作用,我仍然需要制作包含标头 .mm 的文件
我想这样做(或类似的事情)的原因是因为我没有使用 C++ 的经验,并且将 ObjC 更改为 C++ 文件会导致错误和警告。
这是我创建的单例...
// --------------------------------------------------------------------
// OpenfeintController.h
// --------------------------------------------------------------------
#import <Foundation/Foundation.h>
@interface OpenfeintController : NSObject {
NSString *productKey, *secretKey, *displayName;
}
+(OpenfeintController*)sharedOpenfeintController;
- (void) initializeWithProductKey:(NSString *)pKey andSecretKey:(NSString *)sKey andDisplayName:dName;
- (void) launchOpenFeint;
- (void) submitHighScoreToLeaderboard:(NSString *)leaderboardId;
@end
实施
// --------------------------------------------------------------------
// OpenfeintController.mm
// --------------------------------------------------------------------
#import "OpenfeintController.h"
#import "OpenFeint.h"
static OpenfeintController *singletonOpenfeintController = nil;
@implementation OpenfeintController
+(OpenfeintController*)sharedOpenfeintController {
@synchronized(self) {
if (!singletonOpenfeintController) {
singletonOpenfeintController = [[OpenfeintController alloc] init];
}
}
return singletonOpenfeintController;
}
- (void) initializeWithProductKey:(NSString *)pKey andSecretKey:(NSString *)sKey andDisplayName:dName
{
//[OpenFeint initializeWithProductKey:pKey andSecret:sKey andDisplayName:dName andSettings:nil andDelegates:nil];
}
- (void) launchOpenFeint
{
}
- (void) submitHighScoreToLeaderboard:(NSString *)leaderboardId
{
}
@end