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

Reply via email to