歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在Ubuntu上iPhone開發教程

在Ubuntu上iPhone開發教程

日期:2017/2/28 16:20:10   编辑:Linux教程

想開發iPhone應用,沒有Mac Book也沒有Mac Mini,怎麼辦?

想嘗試在Linux上開發iPhone嗎,那就請接著往下看。

1. 前提條件:

在Ubuntu上編譯好toolchain,參見http://www.linuxidc.com/Linux/2010-04/25542.htm。

因為不能跑模擬器,需要一部iPhone手機來測試程序,iPhone3或iPhone4都可以

(目前支持到iPhone 3.1SDK,程序可以在iPhone4上運行)

2. 從UIApplication派生你的應用程序類:

頭文件MyScylla.h

  1. #import <CoreFoundation/CoreFoundation.h>
  2. #import <UIKit/UIKit.h>
  3. @class MyMainView;
  4. @interface MyScylla : UIApplication
  5. {
  6. UIWindow *window;
  7. MyMainView *mainView;
  8. }
  9. @property (nonatomic, retain) IBOutlet UIWindow *window;
  10. @property (nonatomic, retain) IBOutlet MyMainView *mainView;
  11. - (void)applicationDidFinishLaunching:(UIApplication *)application;
  12. - (void)dealloc;
  13. - (void) redirectConsoleLogToDocumentFolder;
  14. @end

m文件MyScylla.m

  1. #import <Foundation/Foundation.h>
  2. #import <UIKit/UIKit.h>
  3. #import <UIKit/UIAlert.h>
  4. #import "MyMainView.h"
  5. #import "MyScylla.h"
  6. int main(int argc, char* argv[])
  7. {
  8. NSAutoreleasePool *autoreleasePool = [
  9. [ NSAutoreleasePool alloc ] init
  10. ];
  11. int returnCode = UIApplicationMain(argc, argv, @"MyScylla", @"MyScylla");
  12. [ autoreleasePool release ];
  13. return returnCode;
  14. }
  15. @implementation MyScylla
  16. @synthesize window;
  17. @synthesize mainView;
  18. - (void)applicationDidFinishLaunching:(UIApplication *)application {
  19. NSLog(@"applicationDidFinishLaunching");
  20. [self redirectConsoleLogToDocumentFolder];
  21. // 可以用bounds方法會得到整個屏幕區域,包括狀態欄
  22. CGRect screenBounds = [ [ UIScreen mainScreen ] bounds ];
  23. // 然後用initWithFrame創建UIWindow對象
  24. window = [ [ UIWindow alloc ] initWithFrame: screenBounds ];
  25. // 用applicationFrame方法返回可顯示區域,不包括狀態欄
  26. CGRect rect = [ [ UIScreen mainScreen ] applicationFrame ];
  27. rect.origin.x = rect.origin.y = 0.0f;
  28. mainView = [[MyMainView alloc]init];
  29. [window addSubview: mainView];
  30. [window makeKeyAndVisible];
  31. }
  32. - (void)dealloc {
  33. [window release];
  34. [mainView release];
  35. [super dealloc];
  36. }
  37. - (void) redirectConsoleLogToDocumentFolder {
  38. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUSErDomainMask, YES);
  39. NSString *documentsDirectory = [paths objectAtIndex:0];
  40. NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"myscylla_log.txt"];
  41. freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
  42. }
  43. @end
Copyright © Linux教程網 All Rights Reserved