在Ubuntu上iPhone开发教程
在Ubuntu上iPhone开发教程
想开发iPhone应用,没有Mac Book也没有Mac Mini,怎么办?
想尝试在Linux上开发iPhone吗,那就请接着往下看。
1. 前提条件:
在Ubuntu上编译好toolchain,参见。
因为不能跑模拟器,需要一部iPhone手机来测试程序,iPhone3或iPhone4都可以
(目前支持到iPhone 3.1SDK,程序可以在iPhone4上运行)
2. 从UIApplication派生你的应用程序类:
头文件MyScylla.h
- #import <CoreFoundation/CoreFoundation.h>
- #import <UIKit/UIKit.h>
- @class MyMainView;
- @interface MyScylla : UIApplication
- {
- UIWindow *window;
- MyMainView *mainView;
- }
- @property (nonatomic, retain) IBOutlet UIWindow *window;
- @property (nonatomic, retain) IBOutlet MyMainView *mainView;
- - (void)applicationDidFinishLaunching:(UIApplication *)application;
- - (void)dealloc;
- - (void) redirectConsoleLogToDocumentFolder;
- @end
m文件MyScylla.m
- #import <Foundation/Foundation.h>
- #import <UIKit/UIKit.h>
- #import <UIKit/UIAlert.h>
- #import "MyMainView.h"
- #import "MyScylla.h"
- int main(int argc, char* argv[])
- {
- NSAutoreleasePool *autoreleasePool = [
- [ NSAutoreleasePool alloc ] init
- ];
- int returnCode = UIApplicationMain(argc, argv, @"MyScylla", @"MyScylla");
- [ autoreleasePool release ];
- return returnCode;
- }
- @implementation MyScylla
- @synthesize window;
- @synthesize mainView;
- - (void)applicationDidFinishLaunching:(UIApplication *)application {
- NSLog(@"applicationDidFinishLaunching");
- [self redirectConsoleLogToDocumentFolder];
- // 可以用bounds方法会得到整个屏幕区域,包括状态栏
- CGRect screenBounds = [ [ UIScreen mainScreen ] bounds ];
- // 然后用initWithFrame创建UIWindow对象
- window = [ [ UIWindow alloc ] initWithFrame: screenBounds ];
- // 用applicationFrame方法返回可显示区域,不包括状态栏
- CGRect rect = [ [ UIScreen mainScreen ] applicationFrame ];
- rect.origin.x = rect.origin.y = 0.0f;
- mainView = [[MyMainView alloc]init];
- [window addSubview: mainView];
- [window makeKeyAndVisible];
- }
- - (void)dealloc {
- [window release];
- [mainView release];
- [super dealloc];
- }
- - (void) redirectConsoleLogToDocumentFolder {
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUSErDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"myscylla_log.txt"];
- freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
- }
- @end
|
评论暂时关闭