iOS Basic Development
User Selection Design
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Social Share
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
UIActionSheet
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
- (IBAction)shareSocial:(id)sender { UIActionSheet *action = [[UIActionSheet alloc]initWithTitle:@"Social Network" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Facebook",@"Twitter", @"Instagram",@"Email", nil]; [action showInView:self.view];
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ if(buttonIndex == 0){ [self directShareFacebook:nil]; } if(buttonIndex == 1){ [self directShareTwitter:nil]; } if(buttonIndex == 2){ [self directShareInstagram:nil]; } if(buttonIndex == 3){ [self directSendMail:nil]; }}
UIActionSheet
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Social Framework
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
- (IBAction)directShareFacebook:(id)sender {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [composeVC setInitialText:self.myTextView.text]; UIImage *image = self.myImageView.image; [composeVC addImage:image]; NSURL *url = [NSURL URLWithString:@"http://www.ibluecode.com"]; [composeVC addURL:url]; [self presentViewController:composeVC animated:YES completion:nil]; }}
SLComposeViewController : Facebook
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Social Framework
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
- (IBAction)directShareTwitter:(id)sender {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [composeVC setInitialText:self.myTextView.text]; UIImage *image = self.myImageView.image; [composeVC addImage:image]; NSURL *url = [NSURL URLWithString:@"http://www.ibluecode.com"]; [composeVC addURL:url]; [self presentViewController:composeVC animated:YES completion:nil]; }}
SLComposeViewController : Twitter
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
UIDocumentInteractionController
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
- (IBAction)openDocumentAction:(id)sender {
NSURL *url = [[NSBundle mainBundle] URLForResource:@"mac_pro" withExtension:@"jpg"]; self.docController = [UIDocumentInteractionController interactionControllerWithURL:url]; self.docController.delegate = self ; BOOL isValid = [[UIApplication sharedApplication] canOpenURL:url]; NSLog(@"uti: %@", [self.docController UTI]); if(isValid){ [self.docController presentOptionsMenuFromRect:self.view.frame inView:self.view animated:YES]; }
}
UIDocumentInteractionController : All
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
- (IBAction)directShareInstagram:(id)sender { NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"Image.igo"]; NSData *imageData = UIImagePNGRepresentation(self.myImageView.image); [imageData writeToFile:savedImagePath atomically:YES]; NSURL *imageUrl = [NSURL fileURLWithPath:savedImagePath]; NSLog(@"%@",imageUrl); UIDocumentInteractionController *docController = [UIDocumentInteractionController new]; docController.delegate = self; docController.UTI = @"com.instagram.exclusivegram"; docController.URL = imageUrl; [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
}else{
[self showAlertView:@"Please install Instagram before share."]; }
}
UIDocumentInteractionController : Instagram
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
UIAlertView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
-(void)showAlertView:(NSString*)title{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:@"" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show];}
UIAlertView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
MFMailComposeViewController
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
- (IBAction)directSendMail:(id)sender {
if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init]; mailVC.mailComposeDelegate = self; [mailVC setSubject:@"Subject"]; NSArray *toRecipients = [NSArray arrayWithObjects: @"[email protected]", @"[email protected]", nil];
[mailVC setToRecipients:toRecipients]; UIImage *myImage = self.myImageView.image ; NSData *imageData = UIImagePNGRepresentation(myImage); [mailVC addAttachmentData:imageData mimeType:@"image/png" fileName:@"attachment"]; NSString *emailBody = self.myTextView.text; [mailVC setMessageBody:emailBody isHTML:NO]; //iOS 5 //[self presentModalViewController:mailer animated:YES]; //iOS 6 [self presentViewController:mailVC animated:YES completion:nil]; }}
MFMailComposeViewController
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Class : UIPickerView
Framework : UIKit
Sample Code : UICatalog
Init : initWithFrame : (CGRect) or Interface Builder
Datasource : â numberOfComponentsInPickerView: â pickerView:numberOfRowsInComponent:
Delegate : â pickerView:titleForRow:forComponent: â pickerView:viewForRow:forComponent:reusingView: â pickerView:didSelectRow:inComponent:
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
āļāļēāļĢāđāļĢāļĒāļāđāļāļāļēāļ
1. Init UIPickerView2. bind Datasouce / Delegate3. āļāļēāļŦāļāļāļāļāļĨāļĄāļ numberOfComponentsInPickerView4. āļāļēāļŦāļāļāļāļēāļāļ§āļāđāļāļ§ pickerView:numberOfRowsInComponent:5. āļāļēāļŦāļāļāļāļēāļĢāđāļŠāļāļāļāļēāđāļāļ Text āļŦāļĢāļ View āđāļ pickerView:titleForRow:forComponent:
pickerView:viewForRow:forComponent:reusingView:6. āđāļ Delegate āđāļĄāļāđāļĨāļāļāļāļāļĄāļĨāđāļŠāļĢāļ pickerView:didSelectRow:inComponent
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
1. Init UIPickerView (.h)
IBOutlet UIPickerView *myPV ;
2. bind Datasouce / Delegate (.m)
[myPV setDataSource:self]; [myPV setDelegate:self]; [myPV selectRow:0 inComponent:0 animated:NO]; [myPV selectRow:0 inComponent:1 animated:NO]; [myPV selectRow:0 inComponent:2 animated:NO];
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
3. āļāļēāļŦāļāļāļāļāļĨāļĄāļ (.m)
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;{ return 3 ;}
4. āļāļēāļŦāļāļāļāļēāļāļ§āļāđāļāļ§ (.m)
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;{ if(component == 1){
return 20 ;}if(component == 0){return 30 ;}
return 10 ;}
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
5. āļāļēāļŦāļāļāļāļēāļĢāđāļŠāļāļāļāļēāđāļāļ Text āļŦāļĢāļ View āđāļ (.m)
#pragma āđāļŠāļāļāļāļēāđāļāļ Text
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;{ NSMutableArray *arrayNo1 = [[NSMutableArray alloc] init]; [arrayNo1 addObject:@"0"]; [arrayNo1 addObject:@"1"]; [arrayNo1 addObject:@"2"]; [arrayNo1 addObject:@"3"]; [arrayNo1 addObject:@"4"]; [arrayNo1 addObject:@"5"]; [arrayNo1 addObject:@"6"]; [arrayNo1 addObject:@"7"]; [arrayNo1 addObject:@"8"]; [arrayNo1 addObject:@"9"];
return [arrayNo1 objectAtIndex:row];}
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
5. āļāļēāļŦāļāļāļāļēāļĢāđāļŠāļāļāļāļēāđāļāļ Text āļŦāļĢāļ View āđāļ (.m)
#pragma āđāļŠāļāļāļāļēāđāļāļāļĢāļāļ āļēāļ
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
NSString *imageName = [NSString stringWithFormat:@"%d.png",row];
UIImageView *bgImageView = [[UIImageView alloc]initWithImage: [UIImage imageNamed:imageName]];
[bgImageView setFrame:CGRectMake(0, 0, 50, 50)];
[bgImageView setContentMode:UIViewContentModeScaleAspectFit];
return bgImageView;
}
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
6. āđāļ Delegate āđāļĄāļāđāļĨāļāļāļāļāļĄāļĨāđāļŠāļĢāļ
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ if(component == 0){ inputCol1 = [arrayNo1 objectAtIndex:row]; } else if(component == 1){ inputCol2 = [arrayNo2 objectAtIndex:row]; } else if(component == 2){ inputCol3 = [arrayNo3 objectAtIndex:row]; }
}
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111
Top Secret
Saturday, June 15, 13
Workshop : Top Secret
Task : āļŠāļĢāļēāļāļŦāļāļēāļāļ Login Password āđāļāļĒ User āļāļāļāļāļēāļāļēāļĢāđāļĨāļāļ Password =246 āļāļēāļ UIPickerView āļāļēāļāļāļāļāļāđāļāļēāļŠāļŦāļāļēāļāļāļāļāđāļ āļŠāļēāļĄāļēāļĢāļ Reset āļāļēāđāļāļāļēāļāļāļĄ RESET BUTTON
Objective : āļāļāđāļĢāļĒāļāļĄāļāļ§āļēāļĄāđāļāļēāđāļāđāļāđāļĢāļāļ UIViewController User Interface āđāļĨāļ° IBOutlet Action-Target Datasouce Delegate
UIPickerView
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
iOS Basic Development
Submit App Store
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Course Outline
1. Introduction & Xcode
2. Objective-C & Frameworks
3. View & ViewController
4. View & ViewController (2)
5. Submit App Store
Course Outline
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Developing iOS Apps : App Store
Add New Application ( iTunes Connect )
Upload required icon and screenshots
Upload Application Binary ( IPA File )
Waiting for app review by apple ( 7 days - Few months)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
āļŦāļĨāļāļāļēāļāļāļāļāđāļĢāļĒāļāđāļāđāļĢāļĒāļāļĢāļāļēāļĢāļāļāļāļēāļāļāļēāļĢāđāļāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļ iPhone āđāļĨāļ°āļāļēāļĢāđāļ Tool āļāļēāļ āđ āđāļāđāļĢāļĒāļāļĢāļāļĒāđāļĨāļ§
āļāļāđāļĢāļĒāļāļāļāļēāļāļēāļĢāđāļāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļāļĒāļēāļāļĢāļēāļāļĢāļ āļĢāļ°āļŦāļ§āļēāļāļāđāļāļĒāļ Code āļāļāļāđāļĄāļĄ Error āļāļ°āđāļĢ āļŠāļēāļĄāļēāļĢāļ Compile āđāļĨāļ° Run Application āđāļāđāļāļĒāđāļĄāļĄāļāļēāļĢ Crash āļāļāļāđāļāļĢāđāļāļĢāļĄāđāļĨāļ°āļāļēāļĢāļāļēāļāļēāļāļāļēāļ āđ āļāļāļĢāļ§āļāđāļĢāļ§āļāļāļāļāļāļāļēāļĄāļāļāļāļāđāļāļāđāļ§āļāļāļāļĢāļ°āļāļēāļĢ.....
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
āļŦāļĨāļāļāļēāļāļāļāļāđāļĢāļĒāļāđāļāđāļĢāļĒāļāļĢāļāļēāļĢāļāļāļāļēāļāļāļēāļĢāđāļāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļ iPhone āđāļĨāļ°āļāļēāļĢāđāļ Tool āļāļēāļ āđ āđāļāđāļĢāļĒāļāļĢāļāļĒāđāļĨāļ§
āļāļāđāļĢāļĒāļāļāļāļēāļāļēāļĢāđāļāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļāļĒāļēāļāļĢāļēāļāļĢāļ āļĢāļ°āļŦāļ§āļēāļāļāđāļāļĒāļ Code āļāļāļāđāļĄāļĄ Error āļāļ°āđāļĢ āļŠāļēāļĄāļēāļĢāļ Compile āđāļĨāļ° Run Application āđāļāđāļāļĒāđāļĄāļĄāļāļēāļĢ Crash āļāļāļāđāļāļĢāđāļāļĢāļĄāđāļĨāļ°āļāļēāļĢāļāļēāļāļēāļāļāļēāļ āđ āļāļāļĢāļ§āļāđāļĢāļ§āļāļāļāļāļāļāļēāļĄāļāļāļāļāđāļāļāđāļ§āļāļāļāļĢāļ°āļāļēāļĢ.....
āđāļāļŦāļĢāļāđāļĄ ?
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
āđāļāļĒāļāļāļāđāļĨāļ§āļāļāļāļāļāļāļēāļĢāđāļāļĒāļāđāļāļĢāđāļāļĢāļĄ āļĢāļ°āļŦāļ§āļēāļāļ āļāļēāļāļēāļĢ Build & Run āļāļ°āđāļāļāđāļāļāļ
1. Error ! (āđāļĄāļŠāļēāļĄāļēāļĢāļ āļāļēāļāļēāļĢ Build āđāļ)2. Warning ! (āđāļĄ Error āđāļāļĄāļāļēāļĢāđāļāļāļ)3. Crash ! (Build āđāļāđāļ Run āđāļĄāđāļ)4. Wrong ! (Run āđāļāđāļāļāļēāļāļēāļāļāļ)5. Slow ! (āļāļēāļāļēāļāļāļāđāļāļāļē āđāļĄāļĨāļ)6. Work ! (āļāļēāļāļēāļāđāļāļāļāđāļĨāļ°āđāļĢāļ§)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
āđāļāļāļāļāļēāļāđāļĢāļēāđāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļĒāļāļāļĢāļāđāļāļĒāļ§āđāļŦāļāļēāļāļēāļāđāļāļāļāļāļāļāļŠāļĄāļāļĢāļāđāļ āļāļāļāļāļāļāļāļāļāļĄāļ§āļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļēāļāļēāļāļāļāļāđāļāļĢāđāļāļĢāļĄāđāļāļāļĨāļ°āļāļ āļāļāđāļĢāļēāđāļĢāļĒāļāļ§āļēāļāļēāļĢ
Debugging
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Debugging
āļāļāđāļŦāļĄāļāļāļēāļĢ Run Application āđāļāļāļĨāļ°āļāļāđāļāļāļāļāļēāļāļēāļāļāļāļ Application āđāļāļāļāļāđāļĢāļēāļŠāļāđāļāļ§āļēāļāļēāļāļēāļāđāļāļāļāļāļāļāļāļēāļĄāļāđāļĢāļēāļāļāļāļāļēāļĢāļŦāļĢāļāđāļĄ āđāļāļĒāļāļāļāļāļāļāļāļ
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Debugging
- āđāļāļĄ-āļĨāļ breakpoints āđāļāļāļŦāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļāļāļāđāļĢāļēāļŠāļāđāļ
- āļāļāļēāđāļāļāļ§āđāļāļĢāļāļēāļ āđ āđāļāđāļāļĒāļāļēāļĢāđāļāļē Mouse āđāļāļ
- Run āđāļāļ Step in ,Step Out āđāļāļāļāļĢāļ§āļāļŠāļāļāļāļāļāļāļāļāļēāļĢāļāļēāļāļēāļāļāļāļāđāļāļĢāđāļāļĢāļĄ
- NSLog āđāļāļāđāļŠāļāļāļāļāļĄāļĨāļāļēāļ āđ āļāļāļŦāļāļēāļāļēāļ Console
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Errors
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Errors
āļāļāļāļāļ°āļāļāļāļēāļĒāļāļ§āļēāļĄāļŦāļĄāļēāļĒāļāļāļ Error āļāļēāļ āđ āļāļĄāļāđāļāļāļāļāļĒāļāļāļāļ°āļāļ§āļĒāđāļŦāđāļĢāļēāđāļāļāļāļŦāļēāđāļāļĢāļ§āļāđāļĢāļ§āļāļ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļēāļāļēāļĢ Build āđāļāļĢāđāļāļĢāļĄāđāļ
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Errors
Expected â;â before ...
āļŠāļēāđāļŦāļ : - āļĨāļĄāđāļŠ ; āļāļāļāļĢāļ°āđāļĒāļ
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Errors
âSomethingâ Undeclared
āđāļĄāļŠāļēāļĄāļēāļĢāļāļŦāļēāļāļĄāļēāļāļāļ Class Something āļāđāļĢāļēāđāļĢāļĒāļāđāļāđāļ
āļŠāļēāđāļŦāļ : - āđāļāļĒāļāļāļ Class āļāļ āđāļāļ āļāļ§āđāļĨāļâāđāļŦāļ - āđāļĄāđāļ import file āļŦāļĢāļ import file āļāļ - āđāļĄāđāļāļāļēāļāļēāļĢ import Framework , library
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Errors
Statically allocated instance of Objective-C class āļŠāļēāđāļŦāļ : - āļĨāļĄāđāļŠ * āđāļŦāļāļ Object āļāđāļāļāļāļĢāļ°āđāļ āļ Dynamic
āđāļāļ NSString myString ; āļāļāļāļāļ NSString *myString ;
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Crash Problem
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Crash Problem
āļŦāļĨāļāļāļēāļāļāđāļĢāļēāđāļ Error āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ Run āđāļāļĢāđāļāļĢāļĄāđāļāđāļĨāļ§āļāļ°āļāļāļ§āļēāđāļāļĢāđāļāļĢāļĄāđāļāļāļāļēāļĢ Crash āđāļāļĢāļ°āļŦāļ§āļēāļāļāļāļēāļāļēāļ āđāļāļĒāļāļāļāļāļ°āļāļāļāļēāļĒāļāļēāļĢāđāļāļ Crash āļāļĄāļāđāļāļāđāļāļāļāļĒ
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Crash Problem
âEXC_BAD_ACCESSâ āļŠāļēāđāļŦāļ : - āļāļēāļāļēāļĢāđāļĢāļĒāļ Object āļāļāļ release āđāļāđāļĨāļ§
āđāļāļ NSString *myString ;
[myString release] ; // āđāļĄāļĄ object āđāļĨāļ§myString = @âTestâ ;
āļāļēāļĢāđāļāđāļ : - Debug āļāļĨāļ°āļāļ āļŦāļĢāļ āđāļāđāļāļĢāļāļāļĄāļ Instruments āļāļĢāļ§āļāļŦāļē Zombies Object
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Crash Problem
âSIGABRTâ = SIGNAL ABORT
āđāļāļāļāļēāļŠāļāđāļŦāļŦāļĒāļāļāļēāļĢāļāļēāļāļēāļāļāļāļāđāļāļĢāđāļāļĢāļĄāđāļāļāļāļāļēāļāļāļ Error āļŠāļēāđāļŦāļ : - āļāļēāļāļēāļĢāđāļĢāļĒāļ Method āļāđāļĄāļĄāļāļĒ āļŦāļĢāļ āđāļĢāļĒāļāļāļ āđāļāļ NSString *myString ;
myString = @âTestâ ;[myString releasee] ; // Method releasee āļāļāđāļĄāļĄāđāļ Class
āļāļēāļĢāđāļāđāļ : - Debug āļāļĨāļ°āļāļ āđāļĨāļ°āļāļĢāļ§āļāļŠāļāļ Warning
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Interface Builder Error
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Understanding Interface Builder Error:
āļāļēāļāļāļĢāļāļāļēāļĢ Crash āđāļāļĢāđāļāļĢāļĄāđāļāļāļāļēāļāļāļēāļĢāļāđāļĢāļēāđāļāđāļ file XIB āđāļ Interface Builder āđāļāđāļāļāļāļ āļŠāļēāđāļŦāļ : - āļāļēāļŦāļāļ Class āļāļāļāļĢāļ°āđāļ āļ
āļ§āļāđāļāđāļ :
- āđāļāļāļŦāļāļēāļāļēāļ Console āđāļĨāļ§āļāļāļĢāļĢāļāļāļĨāļēāļŠāļāļāļ°āļāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĒāļāļāļāļ Class āļ Error āļāļĒāđāļĨāļ§āļāļēāļāļēāļĢāđāļāđāļāđāļŦāļāļāļāļāļ
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Workshop
āđāļŦāļāļāđāļĢāļĒāļāļāļē Project āļāļāļāļāļ§āđāļāļāđāļĨāļ§āļāļāļĨāļāļ Debug āđāļĨāļ°āđāļāđāļ Error āļāļēāļ āđ āļāđāļāļāļāļ
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Performance Tool
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Performance Tool
- Clang Analyzer
- Instruments
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Clang Analyzer
āđāļāļāđāļāļĢāļāļāļĄāļāđāļāļāļēāļĢāļ§āđāļāļĢāļēāļ°āļŦ Code āļāļāļāđāļĢāļēāļāļāļāļāļēāļāļēāļĢ Run āļ§āļēāđāļāļĒāļāđāļāļĄāļāļĢāļ°āļŠāļāļāļ āļēāļāļŦāļĢāļāđāļĄ āđāļāļ
- āļāļĢāļ§āļāļŠāļāļāļāļāļāļāļēāļāļ°āđāļāļ Memory Leaked āđāļ
- āļāļĢāļ§āļāļŠāļāļāļāļ§āđāļāļĢāļāđāļĄāļāļāđāļĢāļĒāļāđāļ
- āđāļĢāļĒāļāđāļāđāļāļāļēāļ menu Build and Analyze
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Instruments
āđāļāļāđāļāļĢāļāļāļĄāļāđāļāļāļēāļĢāļāļāļŠāļāļ Performance āļāļāļ°āļ Run āđāļāļĢāđāļāļĢāļĄ
- āļāļĢāļ§āļāļŠāļāļāļāļāļāđāļāļ Memory Leaked
- āļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļāļāļŦāļāļ§āļĒāļāļ§āļēāļĄāļāļē
- āļāļĢāļ§āļāļŠāļāļ Zombie Object (Object āļāļāļēāļĒāļŦāļĢāļāļāļ Release āđāļāđāļĨāļ§āđāļāļĄāļāļēāļĢāđāļĢāļĒāļāđāļāļāļ āđāļāļĢāļĒāļāđāļŠāļĄāļāļ Zombie āļāļāļēāļĒāđāļĨāļ§āļāļāđāļĢāļĒāļāļāļĨāļāļāļāļĄāļēāđāļŦāļĄ)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Workshop
āđāļŦāļāļāđāļĢāļĒāļāļāļēāļāļēāļĢ Test Performance Project āļāļāļāļāļ§āđāļāļāļāļ§āļĒāđāļāļĢāļāļāļĄāļ Analyzer āđāļĨāļ° Instruments
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Submit AppStore
- āđāļāļāļāļ§āļ§āļāļ 10 July 2008- āđāļāļāļāļĢāļāđāļĢāļāđāļĨāļ°āđāļāļāļāļāļāļāļēāļāļāļāļēāļĒāļāļŠāļāļāļāļ°āļāļēāđāļŦāļāļāļāļāļāļēāļŠāļēāļĄāļēāļĢāļāļāļēāļĒ Application āđāļŦāļāļāļāļ 155 āļāļĢāļ°āđāļāļĻāļāļ§āđāļĨāļ- āļāđāļ 400 āļĨāļēāļāļāļāļāļĄāļāļāļĢ Credit
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Submit AppStore
5-March-2012 - āļāļēāļāļ§āļ App āļĢāļ§āļĄ (iPhone/iPad/iPod Touch) āļāļ 550,000+- āļāļēāļāļ§āļ App āļāļ iPad āļāļ 170,000 +- āļĒāļāļ AppStore Download 25,000 āļĨāļēāļāļāļĢāļ
12-June-2012- āļāļāļāļāļāļāļēāļāļ§āļ App āļĢāļ§āļĄ (iPhone/iPad/iPod Touch) āļāļ 650,000+- āļāļēāļāļ§āļ App āļāļ iPad āļāļ 225,000 +- āļĒāļāļ AppStore Download 30,000 āļĨāļēāļāļāļĢāļ
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
Submit AppStore
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
In-App Purchases (Freemium Model)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
In-App Purchases (Tiny Tower)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
In-App Purchases
Order and Chaos NBA Jam
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
In-App Purchases (The Smurfs Village)
8-Year-Old Girl Racks Up $1400 Bill Buying Smurfberries in Smurf's Village
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
In-App Purchases (Restrictions)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Saturday, June 15, 13