Hello, iPhone!

Contoh aplikasi ini gw ambil dari code sample nya ericasadun, di edit pada beberapa bagian terutama commentnya untuk mempermudah memahami isi aplikasi tersebut. Syarat utamanya adalah iPhone SDK telah terinstall dengan baik dan terintegrasi dengan Xcode.

File: main.m

//
//  main.m
//  Hello
//
//  Customized by Cyberheb on 12/30/08, based on Erica Sadun Sample
//

#import 

@class UIImageView;

@interface HelloController : UIViewController
@end

@implementation HelloController

// Inisialisasi Controller, title dari aplikasi yang dihandle oleh HelloController
// menggunakan string nama bundle
- (id)init
{
	if (self = [super init])
	{
		self.title = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
	}
	return self;
}

// Method ini digunakan untuk me-load view dan kemudian di-assign pada HelloController
- (void)loadView
{
	// Load image hello.png yang telah diletakan pada folder Images dan set sebagai primary view
	UIImageView *contentView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
	[contentView setImage:[UIImage imageNamed:@"hello.png"]];

	// Provide support untuk auto-rotation and resizing
	contentView.autoresizesSubviews = YES;         // Auto-Rotation
	contentView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); // AutoResizing

	// Assign contentView yang baru dibuat sebagai view dari HelloController
	self.view = contentView;

	// Release contentView karena sifatnya hanya temporary untuk create suatu object
	[contentView release];

}

// Method ini digunakan untuk merespon perubahan orientasi dari iPhone
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
	return YES;
}

// Aplikasi akan me-release non-esential data apabila terdapat warning memorry issue
- (void)didReceiveMemoryWarning
{
	// release view apabila tidak attach ke super view
	[super didReceiveMemoryWarning];
}

-(void)dealloc
{
	[super dealloc];

}

@end


@interface AppDelegate : NSObject 
@end

@implementation AppDelegate

// Method ini digunakan untuk mendefinisikan hal-hal dilakukan saat aplikasi berhasil dilaunch
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
	// Alokasikan window utama dengan frame main screen
	UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
	// Alokasikan navigation sebagai object controller dari HelloController
	UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:[[HelloController alloc] init]];
	// Attach view dari navigation ke window utama aplikasi sebagai subview
	[window addSubview:navigation.view];
	// Load window utama pada screen iPhone
	[window makeKeyAndVisible];

}

- (void)applicationWillTerminate:(UIApplication *)application
{
	// Saat aplikasi akan terminate, pada bagian ini bisa ditambahkan fungsi-fungsi seperti menyimpan data terakhir
	// user ke disk
}

- (void)dealloc
{
	[super dealloc];
}


@end


// Sama seperti aplikasi C-Based lainnya, main() merupakan fungsi utama yang akan dijalankan pertama kali
// oleh iPhone. Alur proses load aplikasi pada iPhone dapat dilihat secara detail pada dokumentasi
// iPhone developer
int main(int argc, char *argv[]) {

    // Allocate Pool Memory
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    // Aplikasi Hello akan menggunakan AppDelegate
    int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
    [pool release];
    return retVal;
}

Dan ini adalah info.plist untuk aplikasi diatas

File: info.plist





	CFBundleDevelopmentRegion
	English
	CFBundleDisplayName
	${PRODUCT_NAME}
	CFBundleExecutable
	${EXECUTABLE_NAME}

	CFBundleIconFile
	Cyberheb.png
	CFBundleIdentifier
	com.taqisa.Hello
	CFBundleInfoDictionaryVersion
	6.0
	CFBundleName
	${PRODUCT_NAME}
	CFBundlePackageType
	APPL
	CFBundleSignature
	????
	CFBundleVersion
	1.0
	LSRequiresIPhoneOS
	



Erica sadun memberikan contoh yang mudah bagi kita untuk memahami pemrograman di iPhone. Contoh pada dokumentasi iPhone development dari situs resmi apple biasanya langsung mengharuskan kita menggunakan style object oriented programming yang baik, seperti memisahkan tiap class dan penggunakan NIB files sebagai pengatur resource GUI. Contoh-contoh dari erica sadun menggunakan pemrograman langsung seperti bagaimana pembuatan window, view, controller, dsb dengan memanfaatkan Native API SDK iPhone step-by-step. Sehingga pada akhirnya kita akan memahami konsep iPhonde SDK dengan lebih baik.

Erica merilis sample code diatas bersamaan dengan buku yang ditulisnya, namun sebetulnya kita cukup membaca sample-sample code dan melihat penjelasan API tersebut maka dapat terlihat dengan cukup jelas penjelasan-penjelasan Erica pada buku miliknya (terutama bagi kita-kita yang tidak bisa membeli buku tersebut 😛 ).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s