歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

在Ubuntu上iPhone開發教程

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