| Advanced Mac OS X |
Click to Hide |
| Why am I here? |
An introduction to the instructor and the course. |
| GCC and Objective-C 2.0 |
Create and use macros well, set the flags effectively, and create macros, functions and methods with a variable number of arguments. We'll take a look at GCC-specific extensions and optimization options. Also includes a look at 64-bit programming, Intel-specifc issues, properties, and fast enumerators. |
| Libraries |
Create and use frameworks, bundles, static libraries, and dynamic libraries. |
| Command-Line Programs |
Even though the Unix command-line is old school, it can still be useful to write programs that can be part of a pipeline. We'll take a look at running processes from the command line, supplying arguments, creating pipelines, environment variables, and more. |
| Memory |
Really understand the different flavors of memory: stack, heap, and initialized and uninitialized data segments. A tour of the tools that can help you hunt down memory leaks, and a look at Cocoa garbage collection.
|
| Debugging with Gdb |
Learn the ins and outs of the debugger, getting comfortable with the command-line power not exposed in Xcode. Includes unit testing and code coverage. |
| Exceptions, Error Handling, and Signals |
Error handling is a necessary evil. Learn about errno and Unix errors, setjmp and longjmp, handling signals, blocking signals, exceptions in Cocoa (NS_DURING, @throw), and assertions. |
| File I/O and Permissions |
Find out about Buffered and unbuffered I/O, scatter-gather I/O, file permissions, temporary files, set-uid executables, MacOS aliases and resource forks. And that's just the start. |
| NSFileManager |
Now that you know the sordid details about files, see how Cocoa hides a lot of the complexity from you. You'll create a simple file browser in Cocoa using NSFileManager. |
| Network Programming With Sockets |
Berkeley Sockets, TCP/IP and UDP, and IPv6 |
| CFRunLoop |
Here's how to wait for input/output in an event driven application -- without multithreading! Includes Core Foundation and Cocoa classes that give higher level access to the network. |
| Multiprocessing |
How to write systems that fork for maximum performance. fork(), pipes, and NSTask are covered. Beware of the Zombies! |
| kqueues |
Tired of traditional signal handling and using select() to multiplex I/O? kqueue provides a simple unified model for all that stuff. |
| Accessing the Keychain |
Store and read a user's keys from the keychain. |
| Authorization and Authentication |
Learn how to create processes that need special privileges using the Security framework. Includes an introduction to code signing. |
| Bonjour |
Allow your clients and servers to find each other on the network. |
| Daemons and launchd |
How to write well-behaved daemon processes and user agents using launchd. |
| Multithreading |
How to write systems that spawn new threads for maximum performance. pthreads and NSThread are covered. |
| NSOperation |
Now that you have learned what is hard about threaded programming, see how NSOperation can simplify some of the work. |
| Subversion |
Using Subversion for version control. |
| Performance Tuning |
Learn how to figure out what is really slowing your program down. Master sampling, profiling, Shark, and Saturn. |
| DTrace and Instruments |
Peer into the guts of the operating system while it is running, and use Instruments to diagnose your application's behavior. |
| iPhone |
See how things are different (and the same) between Desktop OS X and the iPhone. |