Final Project — Source Code Submission

Due Date

Monday, December 14th — 11:59pm

Grading Criteria

Grading criteria for the final project will be based on the criteria from the week-long assignments…

  • Correctness of application
  • Appearance of application
  • Adherence to Objective-C and iPhone coding conventions
  • Neatly formatted and indented code
  • Well documented header files
  • Absence of significant performance issues
  • Absence of memory leaks

…as well as…

  • Scope — Is the app sufficiently complex? Does it deliver what was proposed?
  • Polish — How polished is the app? Does it have a launch screen image? Does it have an app icon? Is the app appropriately named? Is the user experience well thought out?
  • Interesting, novelty and uniqueness — Is the app interesting, or is it just a remake of an already existing app? What’s the overall coolness factor?
  • Required Elements — Does it contain multiple views? Does it persist some form of data?
  • Suggested Elements — Does it contain sound effects? Does it contain animation?


Like all of the week-long projects this semester, you will need to submit your source code and necessary resources for grading. You should remove your build directory and zip up the directory containing your Xcode project.

To submit your final project source code, open up a terminal, navigate to your zip file then issue the command:

submit cs491i final-code

Lecture 26 — Customizing App Behavior

Customizing App Behavior

Customizing App Behavior

Lecture 25 — cocos2d for iPhone

cocos2d for iPhone

cocos2d for iPhone

Lecture 24 — Charting & Cover Flow

Charting and Cover Flow

Charting and Cover Flow

Sudoku Image Processing

The iPhone application I mentioned during the camera lecture is called Sudoku Grab. Specifically, the post I was talking about that discusses how they go from an image off the camera to a representation they can build a native UI from is detailed at:

It discusses in quite some detail their image processing techniques. I think it’s a pretty interesting read.

Assignment 8 — Redrawing the View

I’ve had several people email me with issues redrawing the board on touch events. Since this seems to be a semi-common problem, I thought I’d take a moment to address it here.

The problem is likely caused by not all of the draw code being executed. If you take a look at the GLView class’s drawView method, you’ll see that there’s some code before and after the call to the delegate’s (the view controller) drawView: method. It is this code that actually does the screen refresh.

- (void)drawView {
  glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
  [delegate drawView:self];
  glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
  [context presentRenderbuffer:GL_RENDERBUFFER_OES];

So, by simply calling the view controller’s drawView: method the screen refresh doesn’t happen. To ensure this code gets called, instead of invoking the view controller’s drawRect: method simply invoke the GLView’s (the view controllers view property) drawRect method like so…

[(GLView *)self.view drawView];

Lecture 23 — Address Book, Photos & iPod Library Access

Address Book, Photos & iPod Library Access

Address Book, Photos & iPod Library Access