iOS: Categories in a Static Library Not Working?
Grrr…if you have category methods in a static library and those methods don’t seem to exist at runtime (unrecognized selector sent to class 0x...), first make sure that your project target is passing the -ObjC flag to the linker (in Other linker flags). If that doesn’t fix the issue, change the -ObjC flag to -all_load. Details from Apple in this Technical Q&A. You might also try using nm to see if your category methods are being properly compiled into your .iOS: Maintaining Compatibility While Leveraging New Frameworks
If you starting using a framework that didn’t exist in a previous version of iOS, you’ll get dynamic linker errors when attempting to run your application on older devices. For example: dyld: Library not loaded: /System/Library/Frameworks/EventKit.framework/EventKit Referenced from: /Volumes/(...) Reason: image not found To fix this you need to modify your application so that the framework is weak-linked, meaning that the application will continue to run even if linking fails.Rails: Application-Specific Config File
If there’s one thing I hate in programming or web design, it’s having to repeat myself. So I always do my best to abstract out repeated bits of information and put them in a single, easily changeable location. A nice way to do this in Ruby on Rails is to create your own YAML config file. First create the config file in config/config.yml (or any other name), and then we’ll get it loaded.NSPasteboard and Dynamic UTIs
When dealing with pasted or dragged data in Cocoa, we receive the passed data on an NSPasteboard
. Prior to v10.6 (Snow Leopard), this pasteboard could only contain a single item, but now it can contain multiple items, which are returned as an NSArray
via the -pasteboardItems
method.
The data passed in via the pasteboard can be in a variety of types (for instance, a single image could be passed both in JPEG format and TIFF format), and for compatibility reasons these types can be expressed in various ways—they can be MIME types, UTIs, OSTypes, or PboardTypes.
If we want to handle pastes and drags in the proper, modern, multi-item fashion, you’d think we could just iterate over the -pasteboardItems
(each is an NSPasteboardItem
), ask each for its -types
, and handle the data in our preferred format. Unfortunately things aren’t always that simple.