সবাইকে শুভেচ্ছা আইফোন এপ্লিকেশন ডেভেলপমেন্ট চেইন টিউন এর চতুর্থ পর্বে. গত পর্বে কিভাবে একটি নতুন প্রজেক্ট শুরু করতে হয় ও configure করতে হয় জেনেছেন আপনারা. এই পর্বে কোডিং বিষয়ে লিখতে গিয়ে বুঝেছি আসলে জিনিসটা বুঝিয়ে বলা কতটা কষ্টকর, তবুও চেষ্টা করব বুঝিয়ে বলতে. কিছু বিষয় সহজ করে বলতে গিয়ে হয়ত গতানুগতিক programming term গুলো থেকে বেরিয়ে এসে সাধারণভাবে বলব, যারা programming-বোদ্ধা তারা এইগুলোকে ক্ষমাসুন্দর দৃষ্টিতে দেখবেন বলে আমার অনুরুধ রইলো. যারা আগের পর্বগুলো দেখেননি তারা একবার ঘুরে আসতে পারেন আগের তিনটি পর্বে. চলুন শুরু করা যাক আমাদের আজকের পর্ব, এবং এই পর্বে মূলত কোডিং এর দিকে নজর দিব আমরা.
চলুন একটু কোডে হাত দেই. নিচে দেখুন RootViewController.h কোড আছে.
যেখানে প্রথমে..
#import "UIKit/UIKit.h"
করা হয়েছে. এটি করা হয়েছে কারণ আমরা iPhone এর User Interface Kit use করব এখানে. এখানে দরকার হলে পরবর্তিতে আরো অনেক কিছু add করা যাবে আমরা কি কি এই ফাইল এ use করব তার উপর ভিত্তি করে. তারপর আমরা RootViewController এর interface declare করছি, এবং একটি কোলন(:) দিয়ে বলে দিচ্ছি এই interface তা কি ধরনের(মূলত কার type এর object ). এবার লক্ষ্য করুন আমি পূর্বের screenShot এ থাকা ১১নং line এর
@interface RootViewController : UITableViewController
টি পরিবর্তন করে
@interface RootViewController : UIViewController
করেছি. এর কারণ হলো আমরা এখন একটি view এর উপর কিভাবে বিভিন্ন controller নিয়া কাজ করা যায় তা দেখব, তবে আপনি চাইলে table View দিয়েও কাজ করতে পারবেন, কিন্তু একটু কঠিন বলে আমি এখানে UIViewController দিয়া কাজ করছি (এবং এই কারণে RootViewController.xib ফাইল এ tableView টি delete করে নরমাল view আনা হয়েছিল). এখন দেখুন interface declaration এর দুইটি bracket এর ভিতর আমি ৩টি variable declare করেছ
{ IBOutlet UIButton *btnVoila; IBOutlet UILabel *lblHelloWorld; NSString *strHelloWorld; }
প্রথম ২ টি হলো IBOutlet type এর একটি button ও একটি label ও তৃতীয় টি হলো একটি নরমাল string type এর variable . IBOutlet (Interface builder outlet ) হলো আপনি যদি কোনো কিছু xib ফাইল এ add করেন এবং এর কন্ট্রোল code পেতে চান (লক্ষ্য করুন আমরা একটি label ও button আমাদের RootViewController.xib এ add করেছি ) তাহলে সেগুলু সব IBOutlet দিয়ে declare করতে হবে, নাহলে xib ফাইল এর মাঝে এই variable গুলো connect করা যাবেনা. এরপর দেখুন আছে
-(IBAction) btnVoilaTouched:(id)sender; @end
২০ নং line এ এটি হলো একটি মেথড যা কোনো button ক্লিক হলে কি হবে তা execute করবে, এই মেথড এর return type হলো IBAction (interface builder action ) তার মানে আপনার xib ফাইল এর কোনো operation এ এই মেথড টি কাজে লাগবে. এখানে এটি কাজে লাগবে কেও যদি Voila button টি touch করে তাহলে এটি execute হবে. আর পরের :(id)sender মানে হলো কোন element থেকে action টি হচ্ছে তার একটি instance আসবে sender নামক identifier এর ভিতর. পরের line টি তে আছে @end মানে হলো আপনার RootViewController interface এর এখানেই সমাপ্তি.
এখন চলুন দেখা যাক আমাদের RootController.m ফাইল এর কোডে কি আছে.
প্রথমে দেখুন ১১ নং line এ RootViewController.h file টিকে import করা হয়েছে যেন আমরা declare করা variable ও methods গুলুকে ব্যবহার করতে পারি.
#import "RootViewController.h" @implementation RootViewController - (void)viewDidLoad { [super viewDidLoad]; strHelloWorld = @"Helllo Worllld! Click the button below..."; lblHelloWorld.text = strHelloWorld; }
এরপর RootViewController এর implementation declare করা হয়েছে, মানে এখানে RootViewController এর সকল কাজ-কারবার এর বর্ণনা থাকবে. ১৩ নং line এ আছে - (void)viewDidLoad মেথড টি, যা iPhone app এর কোনো xib ফাইল এর বর্ণনাকরি .m ফাইল এ সবার প্রথমে load হয়. মানে হলো আপনার কোনো view এর প্রথম কাজগুলি এখানে করতে হবে. ধরুন আপনি চাচ্ছেন কোনো view load হতেই যেন user কোনো লেখা দেখতে পায়, তাহলে তা এখনে বলে দিন. [super viewDidLoad]; একটি build ইন মেথড call , এটা নিয়া কিছু আপনাকে ভাবতে হবেনা, এর কাজ হলো super class এর একই method কে call করা যাতে view টি initialize হয়. এখন আমরা user কে দেখাতে চাই একটি লেখা, সেটি এ বলে দেয়া আছে এর পরের ২ লাইনে. প্রথমে strHelloWorld নামে যে string variable আছে সেখানে কিছু লেখা assign করলাম( strHelloWorld = @"Helllo Worllld! Click the button below...";), তারপর আমদের XIB তে লেবেল আছে lblHelloWorld নামে, সেটিতে এটি দেখাতে বলে দিলাম( lblHelloWorld.text = strHelloWorld;).
এরপর দেখুন আরেকটি মেথড আছে (যা .h ফাইলে শুধু declare করা হয়েছিল, এখানে তার details কাজ লেখা হয়েছে) যা কাজ করবে কেউ যদি Voila button এ ক্লিক করে( -(IBAction) btnVoilaTouched:(id)sender ) তাহলে এই মেথড এর কোডে আসবে. এখানে আমি একটি UIAlertView শো করেছি যার details আপনারা দেখছেন. শো করার পরপরই আমি alertView টি release করে দিয়েছি. এখানে আপনাদের অনেক বড় একটি বিষয় আমি অল্প করে বলে দিচ্ছি, Objective C তে java এর মত automatic garbage collection নাই, মানে আপনি যদি কোনো vairable এর জন্য memory তে জায়গা allocate করেন (এক্ষেত্রে [[UIAlertView alloc] initWithTitle .... ) তাহলে সেটি আপনাকেই আবার খালি করতে হবে. নাহলে এইসব allocated memory থেকে যাবে ও আপনার app কে স্লো করে দিবে এমনকি app ক্রাশ ও করতে পারে. কোনো মেথড এর ভিতরে ব্যবহৃত allocated , retained , copy করা কোনো মেমরি মেথড এর শেষে release অথবা dealloc করে দিবেন, এবং .h ফাইল এ declared কোনো allocated মেমরি "- (void)dealloc" এই মেথড এ release / dealloc করবেন. iPhone sdk এর মেমরি management নিয়ে অনেক বিষয় আছে, আমি ছোট পরিসরে এর বেশি জানাব না, আপনাদের জন্য এই লিঙ্ক এ summery এবং এখানে পাবেন অনেক্গুলু মেমরি সম্পর্কিত পোস্ট এর লিঙ্ক.
-(IBAction) btnVoilaTouched:(id)sender { UIAlertView *alrtHelloiPhone = [[UIAlertView alloc] initWithTitle:@"First Project" message:@"Hello iPhone App" delegate:nil cancelButtonTitle:@"Got It!" otherButtonTitles:@"Cancel", nil]; [alrtHelloiPhone show]; [alrtHelloiPhone release]; }
এখন ফিরে আসুন RootViewController.xib ফাইল এ. আমরা .h ফাইল এ দুইটি IBOutlet টাইপ এর variable declare করেছিলাম এবং একটি IBAction ধরনের মেথড add করেছিলাম.
এখন এগুলোকে xib এর সাথে লিঙ্ক-আপ করতে হবে. RootViewController.xib টি খুলে নিচের ছবিতে দেখুন কিভাবে placeholders এর মাঝের "File owner " এ right ক্লিক করে ক্লিক না ছেড়ে ড্রাগ করে objects > view এর ভেতর label এর উপর এনে ছাড়বেন,দেখবেন lbHelloWorld শো করছে, এইখানে ক্লিক করুন. ব্যাস, আপনার লেবেল এর নামকরণ/লিঙ্ক আপ শেষ হয়ে গেল. একই ভাবে "File owner " থেকে right ক্লিক-ড্রাগ করে button এর উপর ড্রাগ ছাড়ুন, এবং btnVoila ক্লিক করুন. এবার আরেকটি কাজ বাকি আছে, button এ টাচ করলে যেন -(IBAction) btnVoilaTouched:(id)sender কল হয় সেটি দেখাতে হবে.
সেটার জন্য উল্টা প্রসেস, objects > View এর ভেতরের button এ right ক্লিক-ড্রাগ করে নিয়ে যান placeholders এর "File Owner "এর উপর. দেখবেন "sent events " এ btnVoilaTouched শো করছে, এটিতে ক্লিক করুন.দেখবেন আপনার button এখন touch এর জন্য কোড এর সাথে লিঙ্কআপ হয়ে যাবে.
সবকিছু যদি ঠিক-থাক হয়ে থাকে তাহলে এইবার toolbar থেকে "Build and Run " button ক্লিক করুন, নিশ্চিত করুন এর আগে আপনি "Sceme " থেকে কোনো একটি iPhone সিমুলেটর select করেছেন, screenshot এ দেখুন MyiPhoneProject | iPhone 4.3 Simulator সিলেক্ট করা আছে. একটু সময় নিযে compile করে সিমুলেটর এ install করতে, আশা করি আপনারা আমার নিচের চিত্রের মত একটি simulator দেখতে পাবেন app চালু অবস্থায়. বুত্তন ক্লিক করে দেখুন কি হয় 🙂
এখানে এই প্রজেক্ট এর source kode পাবেন, download করে নিন. তো হয়ে গেল আপনার প্রথম আইফোনের এপ্লিকেশন. এরপর কি? অনেক বহুদূর এর পথ এখনো বাকি বন্ধু... আমার পূর্ববর্তী পর্বগুলিতে উল্লেখিত লিঙ্ক ও অনন্য resource দেখে programming অনুশীলন করতে থাকুন. সামনের পর্বে application deployment এর সম্পর্কে লেখা হবে. সবাই ভালো থাকবেন. [email protected]
আমি শিমুল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 15 বছর যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 12 টি টিউন ও 153 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
Working on iPhone development...and i just wanna be myself....
ভাইয়া, আমি মারা যাব। আপনি নেশা ধরিয়েছেন আর এখন হেল্প করছেন না। এত দিন পর ফিরে ব্যাক টু ব্যাক ২ টা অসাধারন ২টা টিউটোরিয়াল পেয়ে চরম ভালো লাগছে। আপনি প্লীজ ভাইয়া আমাকে হেল্প করুন।আপনাকে তো আমি একবার বলেছিলাম আমি সি এস ই এর ছাত্র। আমি সি পারি। এখন সি++ শিখতেছি। আমি আপনার মতো আই ফোন এর অ্যাপ ডেভ্লপ অরতে চাই। আমি যশোরে থাকি । আমার নেট স্পিড খুবই স্লো। আপনি লেখার পর।অনেক কষ্টে বই গুলো নামাইছি। কিন্তু ভাইয়া, আপনি যদি আমাকে hackintosh আর XCode(IDE) dvd তে বার্ন করে না পাঠান তবে আমার পক্ষে কিচুই করা সম্ভভ না। উল্লেখ্য, আপনি আমাকে hackintosh এর ডি ভি ডি দিতে চেয়েছিলেন। আমি আপনাকে ঠিকানাও দিয়েছিলাম মেইলে। আপনি জবাব ও দিয়েছিলেন। আপনি চাইলে আমি আপনাকে সব টাকা ফ্লেক্সি করেবা পেপাল বা কুরিয়ারে পে করতে পারি। প্লীজ ভাইয়া, হেল্প মি। আপ্নারেক একটি পোস্ট আমার কাছে আশীর্বাদ এর মতো । প্লীজ ভাইয়া হেল্প মি। শুধু মাত্র আপনার একটু সহযোগিতা আমাকে আমার লক্ষে পৌছাতে অনেক বড় হেল্প করতে পারে।
ধন্যবাদ ভাইয়া
নতুন পোস্ট ও আপনার জবাব এর অপেক্ষায় থাকলাম