Showing posts with label iOS Training. Show all posts
Showing posts with label iOS Training. Show all posts

Thursday, August 17, 2017

WWDC 2017 Vedios

WWDC 2017 is over (Jun 5-9, 2017). As I did in the past years, I finally finished watching all videos of WWDC 2017 provided by Apple. There are 136 videos (49+19+15+5+4+10+15+19), each ranging from 10 minutes to over 2 hours, most around 30+ minutes. So I guess the total length of the video is about 70 hours.

Here is the list of videos I watched:

WWDC 2017

Platforms State of the Union - 102
Introducing Core ML - 703
Introducing ARKit: Augmented Reality for iOS - 602
Introducing Metal 2 - 601
Introducing Drag and Drop - 203
What's New in Swift - 402

App Frameworks

  1. Advanced Animations with UIKit - 230
  2. Advanced Touch Bar - session 222
  3. Advances in TVMLKit - 202
  4. Build Better Apps with CloudKit Dashboard - 226
  5. Building Apps with Dynamic Type - 245
  6. Building Great Document-based Apps in iOS 11 - 229
  7. Building Visually Rich User Experiences - 235
  8. Choosing the Right Cocoa Container View - 218
  9. Cocoa Development Tips - 236
  10. Connecting CareKit to the Cloud - 239
  11. Customized Loading in WKWebView - 220
  12. Data Delivery with Drag and Drop - 227
  13. Deep Linking on tvOS - 246
  14. Drag and Drop with Collection and Table View - 223
  15. Efficient Interactions with Frameworks - 244
  16. Extend Your App's Presence With Sharing - 247
  17. Extend Your App’s Presence with Deep Linking - 250
  18. File Provider Enhancements - 243
  19. Filtering Unwanted Messages with Identity Lookup - 249
  20. Focus Interaction in tvOS 11 - 224
  21. Introducing Business Chat - 240
  22. Introducing PDFKit on iOS - 241
  23. Introducing Password AutoFill for Apps - 206
  24. Localization Best Practices on tvOS - 248
  25. Making Great SiriKit Experiences - 228
  26. Mastering Drag and Drop - 213
  27. Media and Gaming Accessibility - 217
  28. Modern User Interaction on iOS - 219
  29. Natural Language Processing and your Apps - 208
  30. Now Playing and Remote Commands on tvOS - 251
  31. The Keys to a Better Text Input Experience - 242
  32. The Life of a watchOS App - 216
  33. Touch Bar Fundamentals - 211
  34. Updating Your App for iOS 11 - 204
  35. What's New in Accessibility - 215
  36. What's New in CareKit and ResearchKit - 232
  37. What's New in Cocoa - 207
  38. What's New in Cocoa Touch - 201
  39. What's New in Core Data 210
  40. What's New in Core Spotlight for iOS and macOS - 231
  41. What's New in Foundation - 212
  42. What's New in Health - 221
  43. What's New in MapKit - 237
  44. What's New in Safari View Controller - 225
  45. What's New in SiriKit - 214
  46. What's New in iMessage Apps - 234
  47. What's New in tvOS - 209
  48. What's New in watchOS 205
  49. Writing Energy Efficient Apps - 238
Design
  1. 60 Second Prototyping - 818
  2. App Icon Design - 822
  3. Communication Between Designers and Engineers - 809
  4. Design Tips for Great Games - 811
  5. Designing Across Platforms - 804
  6. Designing Glyphs - 823
  7. Designing Sound - 803
  8. Designing for Subscription Success - 814
  9. Designing for a Global Audience - 819
  10. Essential Design Principles - 802
  11. Express Yourself! - 820
  12. Get Started with Display P3 - 821
  13. How to Pick a Custom Font - 815
  14. Love at First Launch - 816
  15. Planning a Great Apple Watch Experience - 808
  16. Rich Notifications - 817
  17. Size Classes and Core Components - 812
  18. What’s New in iOS 11 - 810
  19. Writing Great Alerts - 813
Developer Tools
  1. App Startup Time: Past, Present, and Future - 413
  2. Auto Layout Techniques in Interface Builder - 412 very nice on storyboard layout!
  3. Debugging with Xcode 9 - 404
  4. Engineering for Testability - 414
  5. Finding Bugs Using Xcode Runtime Tools - 406
  6. GitHub and the New Source Control Workflows in Xcode 9 - 405
  7. Localizing Content for Swift Playgrounds - 410
  8. Localizing with Xcode 9 - 401
  9. Teaching with Swift Playgrounds - 416
  10. Understanding Undefined Behavior - 407
  11. What's New in LLVM - 411
  12. What's New in Signing for Xcode and Xcode Server - 403
  13. What's New in Swift - 402
  14. What's New in Testing - 409
  15. What’s New in Swift Playgrounds - 408
Distribution
  1. Advanced StoreKit - 305
  2. Introducing the New App Store - 301
  3. What's New in Device Configuration, Deployment, and Management - 304
  4. What's New in StoreKit - 303
  5. What's New in iTunes Connect - 302
Featured
  1. Convenience for You is Independence for Me - 110
  2. From Monroe to NASA - 106 - NA yet
  3. Platforms State of the Union - 102
  4. WWDC 2017 Keynote - 101
Graphics and Games
  1. From Art to Engine with Model I/O -610
  2. Going Beyond 2D with SpriteKit - 609
  3. Introducing ARKit: Augmented Reality for iOS - 602
  4. Introducing Metal 2 - 601
  5. Metal 2 Optimization and Debugging - 607
  6. SceneKit in Swift Playgrounds - 605
  7. SceneKit: What's New - 604
  8. Using Metal 2 for Compute - 608
  9. VR with Metal 2 - 603
  10. What's New with Screen Recording and Live Broadcast - 606
Media
  1. Advances in Core Image: Filters, Metal, Vision, and More -510
  2. Advances in HTTP Live Streaming - 504
  3. Apple Podcasts - 512
  4. Capturing Depth in iPhone Photography - 507
  5. Error Handling Best Practices for HTTP Live Streaming - 514
  6. HLS Authoring Update - 515
  7. High Efficiency Image File Format - 513
  8. Image Editing with Depth - 508
  9. Introducing AirPlay 2 - 509
  10. Introducing HEIF and HEVC - 503
  11. Introducing MusicKit - 502
  12. Vision Framework: Building on Core ML - 506
  13. What's New in Audio - 501
  14. What's New in Photos APIs - 505
  15. Working with HEIF and HEVC - 511
System Framework
  1. Accelerate and Sparse Solvers - 711
  2. Advances in Networking, Part 1 - 707
  3. Advances in Networking, Part 2 - 709
  4. Best Practices and What’s New in User Notifications - 708
  5. Core ML in depth - 710
  6. Creating Immersive Apps with Core Motion - 704
  7. Developing Wireless CarPlay Systems - 717
  8. Enabling Your App for CarPlay - 719
  9. Introducing Core ML - 703
  10. Introducing Core NFC - 718
  11. Modernizing Grand Central Dispatch Usage -706
  12. Privacy and Your Apps - 702
  13. What's New in Apple Pay & Wallet - 714
  14. What's New in Core Bluetooth - 712
  15. What's New in HomeKit - 705
  16. What's New in Location Technologies - 713
  17. What's new in Apple File System - 715
  18. Your Apps and Evolving Network Security Standards - 701
  19. iOS Configuration and APIs for Kiosk and Assessment Apps - 716

References


Read More...

Thursday, July 30, 2015

Learn Newest iOS and OS from WWDC 2015

WWDC 2015 had been hold at Los Angeles, from Jun 08 to 12. I was on vacation hin China during the time.  I started to watch videos when I got the news. This is the great opportunity to get in-depth information about Apple's iOS and OS updates.

I remember that I watched the videos from iTunes University in the past. Since last year, all WWDC videos are available from Web. That is, you can watch videos from web browsers. This year, Apple keeps the same way to provide videos. I like this very much. The following are snapshots of all the videos:










My first impression of WWDC 2015 is that Apple is more open than before. In the past, only keynotes are displayed with audio talk. This time, all the presenters are also visible as they were on stage.

This year I have more time available to watch videos since no more contact work for the time being. I had to watch them during my lunch and evening times after work. I list all the videos I watched in the following table.

My Learning Progress

The first part are Featured Videos on Apple's web site. I watched them first. All those are also listed in the following sections.

No.
Videos
Sections
1
Platforms State of the Union
Featured
2
Introducing WatchKit for watchOS 2
^
3
What's New in Swift
^
4
What's New in Xcode
^
5
Designing for Apple Watch
^
6
Introducing Search APIs
^
7
Designing for Future Hardware
^
8
Optimizing Your App for Multitasking on iPad in iOS 9
^
9
Think Audacious
^
10
Introducing the New System Fonts
^
11
Designing for Future Hardware
^
12
What's New in Managing Apple Devices
^
1-1
Adopting New Trackpad Features
App Frameworks
2-2
Advanced NSOperations
^
3-3
Advanced Touch Input on iOS
^
4-4
App Extension Best Practices
^
5-5
Apple Watch Accessibility
^
6-6
Best Practices for Progress Reporting
^
7-7
Building Apps with ResearchKit
^
8-8
Building Document Based Apps
^
9-9
Cocoa Touch Best Practices
^
10-10
Creating Complications with ClockKit
^
11-11
Getting Started with Multitasking on iPad in iOS 9
^
12-12
Improving the Full Screen Window Experience
^
13-13
Introducing On Demand Resources
^
14-14
Introducing Safari View Controller
^
15-15
Introducing the Contacts Framework for iOS and OS X
^
16-16
Layout and Animation Techniques for WatchKit
^
17-17
Multitasking Essentials for Media-Based Apps on iPad in iOS 9
^
18-18
Mysteries of Auto Layout, Part 1
^
19-19
Mysteries of Auto Layout, Part 2
^
20-20
New UIKit Support for International User Interfaces
^
21-21
Optimizing Your App for Multitasking on iPad in iOS 9
^
22-22
Performance on iOS and watchOS
^
23-23
Seamless Linking to Your App
^
24-24
WatchKit In-Depth, Part 1
^
25-25
WatchKit In-Depth, Part 2
^
26-26
WatchKit Tips and Tricks
^
27-27
What's New in Cocoa
^
28-28
What's New in Core Data
^
29-29
What's New in HealthKit
^
30-30
What's New in HomeKit
^
31-31
What's New in Internationalization
^
32-32
What's New in MapKit
^
33-33
What's New in NSCollectionView
^
34-34
What's New in UIKit Dynamics and Visual Effects
^
35-35
iOS Accessibility
^
36-1
Apple Watch Design Tips and Tricks
Design
37-2
Designing for Apple Watch
^
38-3
Designing for Future Hardware
^
39-4
Designing with Animation
^
40-5
Introducing the New System Fonts
^
41-1
Advanced Debugging and the Address Sanitizer
Developer Tools
42-2
App Thinning in Xcode
^
43-3
Authoring Rich Playgrounds
^
Date:
Junly 10, 2015 (My progress)
44-4
Building Better Apps with Value Types in Swift
^
45-5
Continuous Integration and Code Coverage in Xcode
^
46-6
Improving Your Existing Apps with Swift
^
47-7
Optimizing Swift Performance
^
48-8
Profiling in Depth
^
49-9
Protocol-Oriented Programming in Swift
^
50-10
Swift and Objective-C Interoperability
^
51-11
Swift in Practice
^
52-12
UI Testing in Xcode
^
53-13
What's New in LLDB
^
54-1
Getting the Most out of App Analytics
Distribution
55-2
Supporting the Enterprise with OS X Automation
^
56-3
What's New in Managing Apple Devices
^
57-4
What's New in iTunes Connect
^
58-5
iTunes Connect: Development to Distribution
^
59-1
Apple Design Awards
Featured
60-2
Building Watch Apps
^
61-3
Introducing WatchKit for watchOS 2
^
62-4
Keynote
^
63-5
Platforms State of the Union
^
64-6
Think Audacious
^
65-7
What's New in Cocoa Touch
^
Date:
July 16, 2015 (My Progress)
66-8
What's New in Swift
^
67-9
What's New in Xcode
^
68-1
Deeper into GameplayKit with DemoBots
Graphics and Games
69-2
Enhancements to SceneKit
^
70-3
Going Social with ReplayKit and Game Center
^
71-4
Introducing GameplayKit
^
72-5
Managing 3D Assets with Model I/O
^
73-6
Metal Performance Optimization Techniques
^
74-7
What's New in Metal, Part 1
^
75-8
What's New in Metal, Part 2
^
76-9
What's New in SpriteKit
^
77-1
Audio Unit Extensions
Media
Date:
July 22, 2015 (My Progress)
78-2
Content Protection for HTTP Live Streaming
^
79-3
Editing Movies in AV Foundation
^
80-4
Monetize and Promote Your App with iAd
^
81-5
Safari Extensibility: Content Blocking and Shared Links
^
82-6
Using Safari to Deliver and Debug a Responsive Web Design
^
83-7
What's New in Core Audio
^
84-8
What's New in Core Image
^
85-9
What's New in Web Development in WebKit and Safari
^
86-1
Achieving All-day Battery Life
System Frameworks
87-2
Apple Pay Within Apps
^
88-3
Building Responsive and Efficient Apps with GCD
^
89-4
CloudKit JS and Web Services
^
90-5
CloudKit Tips and Tricks
^
91-6
Debugging Energy Issues
^
92-7
Introducing Search APIs
^
93-8
Introducing Watch Connectivity
^
94-9
Low Energy, High Performance: Compression and Accelerate
^
95-10
Networking with NSURLSession
^
96-11
Privacy and Your App
^
97-12
Security and Your Apps
^
98-13
Wallet - The home for Apple Pay and more
^
99-14
What's New in CloudKit
^
100-15
What's New in Core Location
^
Date:
July 27, 2015 (My Progress)
101-16
What's New in Core Motion
^
102-17
What's New in Network Extension and VPN
^
103-18
What's New in Notifications
^
104-19
Your App and Next Generation Networks
^
Date:
July 27, 2015 (My Progress)

References


Read More...

Tuesday, April 08, 2014

iOS 7 Training Course by Stanford University

iOS 7 training course, Developing iOS Apps for iPhone and iPad, offered by Paul Hegarty, University of Stanford was published on Oct 28, 2013 at iTunesU. I did not realized its availability until today. Actually WWDC 2014 will be on June 2, 2014. New iOS features will be announced in about two months time.

Here is the description of the course:

Updated for iOS 7. Tools and APIs required to build application for the iPhone platform using the iOS SDK. Users interface designs for mobile devices and unique user interactions using multi-touch technologies. Objective-oreiented design using model-controller paradigm, memory management, Objective topics includes: objective-oriented database API, animation, multi-threading and performance considerations.

Prerequisites: C language and objective-orianted programming experience

Recommended: Programming Abstractions.

Offered by Stanford School of Engineering and released with Creative Commons BY-NC-SA licenses.  If you have disability-related accessibility question, please email cs193p-accessibility@lists.stanford.edu.

Couse Outline

I. Couse Introduction, Overview of iOS, MVC Objective-C
II. Xcode 5
III. Objetive-C
IV. Foundation, Attributed Strings
V. View Controller Lifecycle

This course is on the top of Cources in iTunesU.




Today I finished the first course. I am going to update this blog with my progress.



NameFinished DateNotes
1. Class Logistics, Overview of iOS, Objective-C2014-04-08MVC is explained in 1st lesson!
2. Xcode 52014-04-09Created card matching game (Matchismo) project in Xcode 5
3. Objective-C2014-04-09Updated the project with model class CardGame class. Demonstrated communication between Controller and Model & View in Xcode.
4. Foundation and Attributed Strings2014-04-09More on Objetive-C, id, introspection(query id class type and method implementation; Foundation: NSObject, NSArry, NSNumber, NSData, NSDIrectionary, NSUserDefaults, NSRange, UIFont UIColor, NSAttributedString(new in iOS 7).
5. View Controller Lifecycle2014-04-10Continue on attributed string with UITextView (new attributed string for the view). View controller lifecycle and Notification (radio station communication mechanism) with new Attributor demo project.
6. Polymorphism with Controllers, UINavigation, UITableBar2014-04-10Polymorphism: Subclass and abstract class; MVCs controlled by navigation or tab controllers.
7. View and Guestures2014-04-11Views are most often constructed in Xcode graphically. Override drawRect:for customized UIView class, to draw your own staff.  Use UIBezierPath to draw.  Drawing text: UILabel, NSAttributedString.

UIGuestureRecgonizer  for accept inputs: pan, pinch,  rotation, swipe, and tap.

Demo: SuperCard: draw card in customized view class, and handle swipe gesture to turn card, pinch gesture to scale card image.
8. Protocols, Blocks and Animation2014-04-12First two are very important coding practices in Objective-C. Block of codes can be attached to methods as a way for customized implementation. iOS 7 adds two ways to do animation, view animation methods and animator with behaviors. Demo DropIt project shows the power of animations.
9. Animation and Autolayout2014-04-13Continued the previous demo on animation: less tippy, add trap to dropping view with line.
Autolayout is powerful in iOS 7. Paul explained three ways to do it in Xcode: 1. use guidelines, 2. tools in Xcode bottom, and 3. control-click.
Demo: update previous Attibutor project with auto layout, simple and nicely done!


10. Multithreading, Scroll View2014-04-13iOS 7 utilizes blocks to make multithreading much easy to manage and control. Demo project imaginarium shows downloading image with multithreading technique and scroll view to host image with zooming feature.
11. Table View and iPad2014-04-14Table view has been in iOS since iPhone first version. It is a very popular way to show data. Paul showed activity indicator for table view. This may be something new in iOS 7. The second part is about iPad. Demo: universal app Shutterbug displaying photos from Flikr.
12. Documents and Core Data2014-04-14Document is used for storage, here Core data is using it as storage. Core data has been in iOS for long time, but it has been updated extensively. Xcode provides working nice UI and classes for data creation, update, deletion and query. Paul explains basics in a clear layout logic.
13. Core Data and Table View2014-04-15This lecture contains a lot of information about core data, radio notification pub and sub, application delegate, and background execution. All are explained quickly in Photomanian project.
14. UIApplication, Network Activity2014-04-16Briefly on UIApplication: sharedApplication and delegate. One property networkActivityVisible, maybe confusing when you have a lots of activities and turning it on or off. Demo Photomanian, iPad, show photos, and popover. Maps: core classes for Maps. Tip on working on iPad or iPhone, copy and paste storyboard!
15. MapKit and Embed Segue2014-04-16Quickly through MapKit classes. Continued to Photomanian demo, iPhone: replaced PhotoByPhotographer's tableview with mapvuew; iPad: two ways to show maps and photos, first one similar to iPhone's flow out, and second embed view by embed segue, very cool!
16. Modal Segue and Text Field2014-04-17Last segue in this lecture. The only difference is unwise segue, set action to storybord green icon in view. Text field is for text input in one line. Demo: Photomanian, add photos from camera (no camera information in this class) by modal segue, alert view, cancel or add a photo to photographer.

Also showed how to start CLocation manager and to get location of latitude and longitude. 
17. Camera, Core Motion, Application Lifecycle2014-04-18Camera: continued to demo Photomaian to add "Take photo" to new photo view.

In second half, Paul explained Motion APIs first, then he demoed a project Bouncer with no storyboard, all in codes, redBlock and blackBlock to bounce based on animation and motion manager. 
18. Localization, Adding UI to Settings2014-04-18Paul showed tick to localize strings: search for @" in .m, #define for localization, and then gesturing in finder to generate strings. Xcode provides UI for stroryboard localization. Use . for localized strings. Demo: Photomanian localization

For settings, Paul uses Bouncer as demo to as slider for alacrity setting.


Read More...

Tuesday, June 19, 2012

WWDC 2012 Videos Available Now

Today I got news about WWDC 2012 Videos available from Apple's Development site from Weibo. I will be busy to watch all those training videos. The following is the snapshot of iTunes.



Today I only downloaded the first section: Developer Tools with total 28 tracks (14 videos and 14 PDF  slides). HDs are nice but they take too much space and download bandwidth. I only got SD instead, good enough for my, and much quick and less space.

Reference


Read More...

Wednesday, May 02, 2012

Configure git as XCODE Repository

There is one lecture, Xcode and Source Code Management (October 7, 2011), in the open course of Developing Apps for iOS 2011, by Paul at Stanford University.

Paul demonstrated how to use git as a repository for XCODE source code management. To set up a repository, first, quit XCODE completely, and use Terminal command to set it up.

Set up git Repository


There is one file in XCODE project which saves XCODE UI information. Paul recommended not to check it in. This is a file like xxx.xcuserstate.  To find this filename, change the directory to the project path, and user find command to get the file:

$ cd ~/myprojectpath
$ find . |grep "xcuserstate"

This will find a file name with "xcuserstate". Use the following command to exclude the file:

$ echo xxx.xcuserstate > .gitignore

Then initialize the git and add the source codes (assume the source codes are in the current folder):

$ git init
$ git add .

Use the commit command to seal the change:

$ git commit -m "This is my source code repository with first check-in"

Now the repository is set up. The lecture shows more about how to use the repository to check in changes, comparing changes, and creating branches.

Reset git Repository


In about two days, I have experience fatal error to checking my codes. My case was caused in core data module. I added one to my project, and later on I renamed it. After several files changed, I got fatal error when I tried to check in my codes. The problem is that my renamed data module file cannot be found.

I could uncheck this missing files from commit folder detail on the left panel. However, I cannot ignore or remove this change. Since I have a project with not much changes in repository, I decided to reset my repository.

What I did is to exit XCODE first. From the terminal, local the .git folder and remove it:

$ rm -r .git

This will remove all the files in the repository. There may be a lots of prompt to confirm deleting since files within the folder are read-only. I had to press 'y' to remove all of them.

After removing the repository, I repeated the above steps to get a fresh repository. There may be a way to leave the repository there and create a new one in different repository. I'll update this information when I find the way.

References


Read More...

Monday, April 23, 2012

git Configuration

I have not used git for my source code repository on my Mac. Today, I realized that git is not available in my Terminal. Actually, after googling, I found that git is in my Mac, but not in my PATH.

The git sits in my /usr/local/git folder.  The binary tool is at bin there. So I need to add git to my PATH. This can be done by vim editor:

vim ~/.profile

Add or update the following line:

export PATH="$PATH:/usr/local/git/bin:"

Save the change and exit VIM.

Run the following command to load the path from .profile:

source ~/.profile

Now the git is available in Terminal!

Read More...

Sunday, April 01, 2012

Steps to Delegate in iOS

I am back to the course of iOS Development by Stanford University. Last week, I watched Lesson 9 Table Views(October 25, 2011). Instructor Paul Hegarty mentioned 5 steps about Delegate at 1:04:15.

He talked the confusion for new developers when they use protocols.  The 5 steps are clear explanation on how to use and implement protocols. He also showed the steps in his demo.



  1. Create the @protocol
  2. Add delegate @property to delegator's public @interface
  3. Use delegate property inside delegator's implementation
  4. Set the delegate property somewhere inside the delegate's @implmentation
  5. Implement the protocol's method(s) in the delegate(include <> on @interface)


In the demo, the protocol CalculatorProgramsTableViewControllerDelegate is created in CalculatorProgramsTableViewController.h:

@class CalculatorProgramsTableViewController;

@protocol CalculatorProgramsTableViewControllerDelegate

@optional
- (void)calculatorProgramsTableViewController:(CalculatorPorgramTableViewController *)sender
                                 choseProgram:(id)program;
@end

In CalculatorProgramsTableViewController.h, the delegate is created in the controller as weak id <...> delegate:

@interface CalculatorProgramsTableViewController : UITableViewController
...
// Define a property delegate
@property (nonatomic, weak) id<CalculatorProgramsTableViewControlerDelegate> delegate;
...
@end

In its .m file, the delegate property is defined by @synthesize delegate = _delegate.

@implementation CalculatorProgramsTableViewController
...
@synthesize delegate = _delegate;
...
@end

In the event of a row cell being selected, the delegate is used:

#progma mark - UITableViewDelegate

- (void)tableView:(UITableView *)tableView
    didSeelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  id program = [self.programs objectAtIndex:indexPath.row];
  [self.delegate calculatorProgramsTableViewController:self
                                          choseProgram:porgram];
}

Next, where the delegate is set? in the event of controller segue. The delegate method is implemented in the controller:

@implementation CalculatorGraphViewController
...
- (void)prepareForSegue:(UIStoryboardSegue *)segue
                 sender:(id)sender
{
  if ([segue.identifier isEqualToString:@"Show Favorite Graphics"]) {
    NSArray * programs = [[NSUserDefaults standardUserDefaults]
      objectForKey:FAVORITES_KEY];
    [segue.destinationViewController setPrograms:programs];
    [segue.destinationViewController setDelegate:self]; // set delegate
  }
}

Lastly, in order for the graphic view controller to know the change of a program, the controller has to implement the delegate method. The protocol method will be called when the delegate sends out its message: a row in table view being selected:

// in .h file, the protocal delegate is defined as the controller's interface
@interface CalculatorGraphViewController : NSOjbect
             <CalculatorProgramsTableViewControllerDelegate>
...
@end

//In .m The protocol method is implemented
- (void)calculatorProgramsTableViewController:(CalculatorProgramsTableViewController *)sender
                                chooseProgram:(id)program
{
  self.calculatorProgram = program;
}

"That's all we need. OK!", Paul said.

References


Read More...

Saturday, January 28, 2012

iOS Training Cource by Stanford University

I wrote the following blog while I was in Wuhan, China, during my vacation. For some reason, I could not access to my blogger there. I had to write my blogs in my sina blog. Now I copy the blog back to my programming blog.


I had to write my English blog at Sina blog web site since the Blogger is not accessible, during my visit to my extended family in Beijing and Wuhan. Fortunately, I have a Sina blog account so that I can continue to write my blog. I'll copy this blog to my Blogger when I get back.

Before I left for China, I found that iOS training by Stanford University(SU) was released. This is fall session course, started being published in Nov 2012. SU started to provide iPhone training courses several years ago, and I watched all the past iPhone training courses. I enjoy watching those courses very much. Even the course is an entry program for developers about iPhone application and Objective-C, the content has been kept up with the update of iOS. Based on the techniques and knowledge I learned from the course, I started my iPhone application development. I have to say that SU's course helps me a lot.

I think that SU's training course was one of a few educational programs for iPhone development and Obective-C. I greatly appreciate the updated content of the course along with the iOS progress. This time, the SU's iOS course has so many new contents about iOS 5. This course is quite different from the previous ones. For example, there is no more memory management by keeping track of reference counts. The XCODE is based on the new version of XCODE 4. The storyboard is included in the course as well. I think this course is a must-watch program for every iPhone and iPad developer.

I like the instructor, Paul Hegarty, very much. He started to teach this course last year. In this training, during the date Steve Jobs passed away, he revealed that he was in part of Steve Jobs' NeXT computer team in the early years. Later on he moved to University to teach computer courses. He is very knowledgable in Mac and iOS development.

I have downloaded all available classes before my leave from iTunes U. Now (Jan 7, 2012) I finished about 7 classes.

It seems that all those courses are available in iTunes U in China. The iTunes U course is in two formats: one in SD and another in HD. There is big difference in size. HD, in hight definition, takes a lot of spaces and thence takes too long time to download. For me, it is just a course to learn new things, and most likely I would not watch it again. Therefore, I would recommend to download the SD serials instead. Search for "iPhone" in iTunes to find SD serials.



References


Read More...