On Dec 13, 2012, at 7:28 PM, Kevin Perry <kpe...@apple.com> wrote: > On Dec 13, 2012, at 4:24 PM, Greg Parker <gpar...@apple.com> wrote: >> On Dec 13, 2012, at 4:13 PM, Robert Monaghan <b...@gluetools.com> wrote: >>> I went ahead and created a really crude subclass of NSMutableData. It seems >>> to work for my situation. >>> Attached is the code, for posterity. (I am sure I won't be the only one >>> working around this.) >>> >>> Any suggestions to make this a bit more "Proper" are welcome. >> If that's all you need then you should wrap the buffer in an immutable >> NSData. NSData won't mind if you poke directly at the contents of the buffer. > Except that he's probably expecting to be able to invoke -mutableBytes and > modify the buffer's contents without changing the length. Immutable NSData > objects don't respond to -mutableBytes.
In this case, you could do this, as ugly as it is (and it also violates LSP, as it changes the behavior of all NSData objects, though that's unavoidable due to the class cluster anyway; depending on an immutable NSData to throw an exception on receiving -mutableBytes would be so wrong I don't think it's that bad to break it). @interface NSData (MutableImmutable) - (void *)mutableBytes; @end @implementation NSData (MutableImmutable) - (void *)mutableBytes { #if __cplusplus return const_cast<void *>(self.bytes); #else return (void *)self.bytes; #endif } @end -- Gwynne Raskind _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com