2009-04-02 10 views
5

Poszukuję opinii od deweloperów Mac/iPhone'a o nowym projekcie. Pomysł polega na uruchomieniu inicjatywy open source przy użyciu narzędzia swig (www.swig.org) do automatycznego generowania mostu od obiektywnego c do C++, aby uzyskać dostęp do aplikacji C++ z dotyku kakao/kakao.Automatyczne generowanie kodu dla mostu od Objective C do C++

Jabłko zapewnia bardzo dobre wsparcie dla mieszania Objective C i C++ poprzez Objective C++, ale pisząc te mosty ręcznie może być nużące i błąd podatna. Celem tego projektu jest zapewnienie automatycznego generowania obiektywnych interfejsów c i owijaczy w stosunku do C++, aby każda aplikacja dotykowa kakao lub kakao mogła zobaczyć obiektowy interfejs c z C++ pod spodem.

Byłbym bardzo wdzięczny za wszelkie opinie lub sugestie dotyczące tego pomysłu.

Odpowiedz

1

Uderza mnie to na tyle dobrze, że zdziwiłbym się, gdyby coś takiego już nie istniało. Z drugiej strony, ponieważ możesz skompilować C++ bezpośrednio (patrz, co daje rozszerzenie .mm), może to być trochę banalne.

4

Nie sądzę, że jest to konieczne. Z Objective-C++, w ogóle nie potrzebujesz mostu. Biorąc pod uwagę klasę C++ zdefiniowaną jako

możesz używać tej klasy w dowolnym miejscu w kodzie Objective-C++. Na przykład, w metodzie:

- (void)myObjCMethod { 
    Foo myFoo; 

    myFoo.someMethod(); 

    //etc. 
} 

można mieć zmienne instancji, które wskazują na C++ klas, więc można zdefiniować klasę Objective-C jak

@interface Bar : NSObject { 
    Foo *foo; 
} 

@property (assign) Foo * foo; 
@end 

@implementation 
@synthesize foo; 

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

- (id)init { 
    if(self = [super init]) { 
    foo = new Foo(); 
    } 

    return self; 
} 

- (void)aMethod { 
    self.foo->barMethod(); 
} 

Nie sądzę można szablonu metoda Objective-C, ale instancje szablonów C++ w Objective-C++ są uczciwą grą. Podobnie jak Objective-C jest ścisłym nadzorem C, Objective-C++ jest nadzbiorem C++, dodając klasy stylu Objective-C i przekazywanie wiadomości.

Jeśli chcesz "połączyć" klasę C++, będziesz miał problemy ogólnie, ponieważ rzeczy takie jak wielokrotne dziedziczenie i przeciążanie operatorów nie są obsługiwane w modelu obiektowym Objective-C.