Главная » iPhone » Второе самое бесполезное приложение iPhone

0

Теперь, когда вы знаете, как породить класс и гview, у вас есть все, что вам нужно для написания приложения, которое что-либо делает— пусть даже и чечто самое бесполезное. Согласно традиции мы сейчас представляем формально бесполезное приложение "Hello, World!"

Это приложение, показанное в листингах 3.3 и 3.4, может быть построено с использованием тех же самых аргументов командной строки, что и в предыдущем примере:

$ arm-apple-darwin9-gcc -о MyExample MyExample.m -lobjc

-framework CoreFoundation -framework Foundation -framework UIKit

#import <CoreFoundation/CoreFoundation.h> #import <UIKit/UIKit.h> #import <UIKit/UITextView.h>

@interface MainView : UlView {

UITextView *textview;

}

-   (id)initWithFrame:(CGRect)frame;

-   (void)dealloc; @end

@interface MyApp : UIApplication

{

UlWindow *window;

MainView *mainView; } ‘

-   (void)applicationDidFinishLaunching: (NSNotification *)aNotification;

@end

| Листинг 3.4. Пример "Hello, World!" (MyExample.m)

#import "MyExample.h"

int main(int argc, char **argv)

{

NSAutoreleasePool *autoreleasePool = [ t NSAutoreleasePool alloc ] init

];

int returnCode = UIApplicationMain(argc, argv, @"MyApp", @"MyApp"); [ autoreleasePool release ]; return returnCode;

}

@implementation MyApp

-    (void)applicationDidFinishLaunching:(NSNotification *)aNotification { window = [ [ Uiwindow alloc ] initWithContentRect:

[ UIHardware fullScreenApplicationContentRect ]

] ;

CGRect rect = [ UIHardware fullScreenApplicationContentRect ]; rect.origin.x = rect.origin.у = O.Of;

mainView = [ [ MainView alloc ] initWithFrame: rect ];

[ window setContentView: mainView ]; [ window orderFront: self ]; [ window makeKey: self ]; [ window _setHidden: NO ];

}

Send

^implementation MainView

-    (id)initWithFrame:(CGRect)rect {

self = [ super initWithFrame: rect ].; if (nil != self) {

textView = [ [ UITextView alloc ] initWithFrame: rect ]; [ textView setText: @"Hello, World!" ]; [ self addSubview: textView ];

return self;

}

- (void)dealloc {

[ self dealloc ]; [ super dealloc ];

}

@end

?

Как это работает

Пример "Hello, World!" содержит все, что вы видели до этого момента, а также новый вид, созданный для отображения текста:

1.         Приложение порождается точно так же, как и раньше,— путем вызова программной функции main (), которая создает экземпляр муАрр.

2.         Вместо создания родового класса uiview приложение порождает собственный класс MainView, являющийся производным ОТ UlView.

3.          Вызывается метод initwithFrame класса MainView, который в свою очередь вызывает свой родительский класс (uiview) и собственный метод initwithFrame, чтобы позволить uiview сделать работу по созданию самого вида.

4.         uiTextview, о котором вы узнаете более подробно в разд. "Текстовые виды" далее в этой главе, создается и присоединяется к объекту MainView. Этот текстовый вид предоставляет текст "Hello. World!"

5.         Окну дается указание отобразить объект MainView и присоединенный к нему объект UITextView.

Для дальнейшего изучения

Теперь, когда в вашем приложении есть то, на что можно посмотреть, сделайте следующее.

? Попытайтесь изменить начало координат и размер рамки, передаваемые в mainView. Что произойдет с окном и его потомком? А как насчет того, чтобы изменить начало координат отображен ИЯ textView?

? Проверьте наличие прототипов UIWindow.h и UlView.h в вашем каталоге include. Вы найдете их в папке /toolchain/sys/usr/include/UIKit/.

Источник: Здзиарски Дж. iPhone. Разработка приложений с открытым кодом: Пер„с англ. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2009. — 368 е.: ил.

По теме:

  • Комментарии