Другой подход заключается в том, чтобы не использовать Qt/C++, а создавать классы C++ внутри Objective C и полностью избегать Qt, выбирая их, чтобы сделать жизнь намного проще в C++:
#include <string>
#include <stdio.h>
#include <sqlite3.h>
#include <Foundation/Foundation.h>
строковые документы
стандартные документы
примечания стандартного интерфейса
документы sqlite3
документы Apple Foundation Class
Кроме того, можно (и даже нужно) добавить немного Objective C в свой код на C++, чтобы облегчить себе жизнь. Вот пример файла .mm
, который позволяет смешивать C++ и Objective C:
#include <string>
#include <stdio.h>
#include <sqlite3.h>
#include <Foundation/Foundation.h>
class Testlib {
public:
std::string test(std::string sIn) {
sIn = sIn.append("-response");
return sIn;
}
NS_RETURNS_RETAINED NSString *test2(NSString *sIn) {
// note [[funky Objective C syntax]]
NSString *sOut = [[NSString alloc] init];
sOut = [NSString stringWithFormat:@"%@-response", sIn];
return sOut;
}
};
Чтобы я мог вызвать это из моего файла main.m, мне пришлось переименовать его в main.mm, а затем сделать что-то вроде:
#import <Cocoa/Cocoa.h>
#import "testlib.mm"
int main(int argc, const char * argv[]) {
// demo Testlib out to the debug log
Testlib *o = new Testlib();
std::string s = "";
s = o->test("request");
NSLog(@"Result=%s",s.c_str());
NSLog(@"Result2=%@",o->test2(@"request"));
// load our GUI
return NSApplicationMain(argc, argv);
}
Таким образом, по большей части он обеспечивает простоту использования C++, но делает его мощным с помощью материалов SQLite3 и Apple Foundation Class, чтобы делать в значительной степени то, для чего можно было бы использовать Qt (без необходимости включать очень большие библиотеки среды выполнения Qt). ). Тем не менее, для графического интерфейса — Cocoa довольно скуден по параметрам (осмелюсь сказать, фашистским) по сравнению с Qt, поэтому я предпочитаю использовать родной Mac WebKit внутри Cocoa, который открывает широкий спектр стилей графического интерфейса. Кроме того, используя собственный WebKit Mac вместо встроенного WebKit Qt, вы можете уменьшить размер .app
примерно на 30 МБ.
person
Volomike
schedule
09.12.2015