Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <Foundation/Foundation.h>
- #include <string>
- #include <vector>
- @interface ObjcClass: NSObject
- @property (nonatomic, readonly) NSString *name;
- - (instancetype)initWithName:(NSString *)name;
- - (void)speak;
- @end
- @implementation ObjcClass
- - (instancetype)initWithName:(NSString *)name {
- self = [super init];
- if (self) {
- _name = name;
- }
- return self;
- }
- - (void)dealloc { NSLog(@"%@ is deleted", self.name); }
- - (void)speak { NSLog(@"I am %@", self.name); }
- @end
- class CppClass {
- public:
- std::vector<ObjcClass*> m_objcInstances; // ### Is ARC enabled? ###
- public:
- CppClass()
- : m_objcInstances() {
- for (int i = 0; i < 5; ++i) {
- auto name = [NSString stringWithFormat:@"Objc instance %d", i];
- m_objcInstances.push_back([[ObjcClass alloc] initWithName:name]);
- }
- }
- ~CppClass() { NSLog(@"CppClass is deleted"); }
- void Speak() const {
- for (auto objc : m_objcInstances) {
- [objc speak];
- }
- }
- };
- int main(int argc, const char * argv[]) {
- ObjcClass *reference = nil;
- @autoreleasepool {
- NSLog(@"Hello, World!");
- const auto cppClass = CppClass();
- cppClass.Speak();
- reference = cppClass.m_objcInstances[2]; // retain
- }
- NSLog(@"End");
- return 0;
- }
Add Comment
Please, Sign In to add comment