C++ ve Objective-C'yi karıştırmaya çalışıyorum, bunu en iyi şekilde yaptım ancak Objective-C ve C++ kodu arasında tek bir arabirim sınıfına sahip olmak istiyorum. Bu nedenle ViewController arabiriminde kalıcı bir C++ nesnesi olmasını isterim.C++ Nesnesini Objective-C Sınıfı'na Ekleme
Bu, hiçbir türüyle 'myCppFile' bildirimi yasaklayarak başarısız:
#import <UIKit/UIKit.h>
#import "GLView.h"
#import "myCppFile.h"
@interface GLViewController : UIViewController <GLViewDelegate>
{
myCppFile cppobject;
}
@end
Ancak bu (ben cppobject Aramalar arasında devam etmek istiyorum çünkü çalışmıyor, mm uygulama dosyasında gayet güzel çalışıyor)
#import "myCppFile.h"
@implementation GLViewController
- (void)drawView:(UIView *)theView
{
myCppFile cppobject;
cppobject.draw();
}
Teşekkürler, diğer öneriler işe yaramadı ve ben nesneyi bir "id *" olarak ilan ettim ve sonra onu kullanmak istediğim her yerde doğru türe döktüm. Bu aynı fikir gibi gözüküyor, ancak tüm ekstra oyuncuları yapmak zorunda olmadığımdan çok daha temiz. – Winder
Her zaman dökümler üzerinde opak işaretçileri tercih ederim - biraz daha fazla iş olabilir, ancak tam tip güvenlik elde edersiniz. –
C/C++ sarma için kapsamlı olarak kullandığım bunun için opak işaretçilerle oynuyordum, ancak şu ana kadar gerçek faydayı görmedim. Bu stili ("opak" ın nasıl tahsis edildiğini ve serbest bırakıldığını gösteren bir kod ile birlikte) void * tabanlı stile göre karşılaştırabilirsiniz: http://robnapier.net/blog/wrapping-c-objc-20 –