Welcome 微信登录

首页 / 操作系统 / 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  
  • 1
  • 2
  • 3
  • 下一页
Ubuntu 安装后不能进入bios解决Ubuntu上ldid编译和使用相关资讯      iPhone  Ubuntu教程 
  • 华尔街日报:今年的新 iPhone 不会  (06月22日)
  • iPhone 和中国仍为苹果带来强劲增  (07/22/2015 13:42:27)
  • 大量 T-Mobile 使用者投诉 iPhone   (06/25/2015 17:32:41)
  • 传新一代 iPhone 会将 Force Touch  (08/12/2015 11:31:20)
  • 传闻苹果已开始生产具压力感应屏幕  (06/28/2015 15:15:45)
  • iPhone 使用者现在能在 Google 日  (06/25/2015 07:24:22)
本文评论 查看全部评论 (0)
表情: 姓名: 字数