On Dec 13, 2012, at 7:28 PM, Kevin Perry <[email protected]> wrote:
> On Dec 13, 2012, at 4:24 PM, Greg Parker <[email protected]> wrote:
>> On Dec 13, 2012, at 4:13 PM, Robert Monaghan <[email protected]> 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 ([email protected])
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 [email protected]