Objective-C сборка мусора и C ++ - PullRequest
1 голос
/ 16 февраля 2012

Я пишу программу на Objective-C с включенной сборкой мусора. Она опирается на определенную стороннюю библиотеку C ++, но ее заголовки не компилируются как Objective-C ++, поэтому у меня есть хороший объем чистого кода C ++ с некоторым Objective-C ++, устраняющим разрыв.

Я сделал такое в мосту, чтобы разрешить передачу объектов Objective-C в C ++:

#ifdef __OBJC__
  @class NSManagedObjectID;
#else
  typedef void NSManagedObjectID;
#endif

Полагаю, это неправильно, поскольку C ++ ничего не знает о сборке мусора в Objective-C. Если сторона C ++ удерживает ссылку (и я бы этого хотел), в то время как ничего на стороне Objective-C не делает, я бы в итоге получил висячий указатель?

Если так, как правильно с этим справиться?

1 Ответ

0 голосов
/ 16 февраля 2012

Поэтому, когда я сказал «сборка мусора», мне действительно следовало сказать «автоматический подсчет ссылок». И похоже, что я ищу, это приведение с мостовым соединением («Эти приведения необходимы для передачи объектов в ARC-контроль и из него»):

http://clang.llvm.org/docs/AutomaticReferenceCounting.html#objects.operands.casts

...