在Objective-C中使用C++

Greeting.h

 

#import <Foundation/Foundation.h>

class Hello {
private:
	id greeting_text;
public:
	Hello() {
		greeting_text = @"Hello, world!";
	}
	Hello(const char *initial_greeting_text) {
		greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text];
	}
	void say_hello() {
		printf("%s\n", [greeting_text UTF8String]);
	}
};

@interface Greeting : NSObject {
@private
	Hello *hello;
}

- (id)init;
- (void)dealloc;
- (void)sayGreeting;
- (void)sayGreeting:(Hello *)greeting;
@end
 

Greeting.mm

 

#import "Greeting.h"

@implementation Greeting

- (id)init {
    if (self = [super init]) {
        hello = new Hello();
    }
    return self;
}

- (void)dealloc {
    delete hello;
    [super dealloc];
}

- (void)sayGreeting {
    hello->say_hello();
}

- (void)sayGreeting:(Hello *)greeting {
    greeting->say_hello();
}

@end

 

示例:

 

Greeting *greeting = [[Greeting alloc] init];
[greeting sayGreeting];                         
	
Hello *hello = new Hello("Hello");
[greeting sayGreeting:hello];                  
	
delete hello;
[greeting release];

 

主要是要注意类必须以mm结尾,否则无法编译。

猜你喜欢

转载自eric-gao.iteye.com/blog/1637312