Hi,
What's safe is encoding with any supported integer type and decoding with
another integer type, so you can write a keyed archive with @encode(long) and
decode it as @encode(int), even if long is 64-bits and int is 32-bits.
In other words it's safe to use @encode(NS[U]Integer). However, if the ivar is
changed to NSUInteger, I think these:
- [aCoder encodeValueOfObjCType: "i" at:&_selected_item];
+ [aCoder encodeValueOfObjCType: "I" at:&_selected_item];
- [aDecoder decodeValueOfObjCType: "i" at:&_selected_item];
+ [aDecoder decodeValueOfObjCType: "I" at:&_selected_item];
should actually use @encode(NSUInteger), not "l". Otherwise the patch looks
good :-).
Eric
On 2012-04-09, at 11:08 AM, Fred Kiefer wrote:
Most of the patch is ok, but we have too ake a careful look at the coding
change. This may break backwards and forewards compatibility. Maybe Richard is
able to explain if this change is save or not.
Fred
On the road
Am 09.04.2012 um 18:02 schrieb "Sebastian Reitenbach"<address@hidden>:
Hi,
while looking at compilation warnings from the latest releases, I found in -gui
(svn) some parts in NSTableView that would need to be changed. First is easy,
declare i as NSUInteger (was unsigned before). Further I think _selected_item
declared in the header as NSInteger also should be a NSUInteger.
is it OK when I commit the patch?
Sebastian
Index: Source/NSTabView.m
===================================================================
--- Source/NSTabView.m (revision 35049)
+++ Source/NSTabView.m (working copy)
@@ -123,7 +123,7 @@
- (void) removeTabViewItem: (NSTabViewItem*)tabViewItem
{
- unsigned i = [_items indexOfObject: tabViewItem];
+ NSUInteger i = [_items indexOfObject: tabViewItem];
if (i == NSNotFound)
return;
@@ -202,7 +202,7 @@
- (void) selectNextTabViewItem: (id)sender
{
- if ((_selected_item != NSNotFound)&& ((unsigned)(_selected_item + 1)<
[_items count]))
+ if ((_selected_item != NSNotFound)&& ((_selected_item + 1)< [_items
count]))
{
[self selectTabViewItemAtIndex: _selected_item + 1];
}
@@ -550,7 +550,7 @@
[aCoder encodeValueOfObjCType: @encode(BOOL) at:&_draws_background];
[aCoder encodeValueOfObjCType: @encode(BOOL) at:&_truncated_label];
[aCoder encodeConditionalObject: _delegate];
- [aCoder encodeValueOfObjCType: "i" at:&_selected_item];
+ [aCoder encodeValueOfObjCType: "I" at:&_selected_item];
}
}
@@ -631,7 +631,7 @@
[aDecoder decodeValueOfObjCType: @encode(BOOL) at:&_draws_background];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at:&_truncated_label];
_delegate = [aDecoder decodeObject];
- [aDecoder decodeValueOfObjCType: "i" at:&_selected_item];
+ [aDecoder decodeValueOfObjCType: "I" at:&_selected_item];
_selected = [_items objectAtIndex: _selected_item];
}
return self;
Index: Headers/AppKit/NSTabView.h
===================================================================
--- Headers/AppKit/NSTabView.h (revision 35049)
+++ Headers/AppKit/NSTabView.h (working copy)
@@ -54,7 +54,7 @@
BOOL _draws_background;
BOOL _truncated_label;
id _delegate;
- NSInteger _selected_item;
+ NSUInteger _selected_item;
}
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem;
- (void)insertTabViewItem:(NSTabViewItem *)tabViewItem