2010-05-03 2 views
1

Я работаю с вилкой Роберта Пейна PSMTabBarControl, которая работает с IB 3.2 (спасибо BTW Robert!): http://codaset.com/robertjpayne/psmtabbarcontrol/. Демо-приложение отлично работает на 64-битных системах, но когда я пытаюсь открыть XIB-файл в Interface Builder в 32-битной системе, я получаю: IBXMLDecoder: значение (4654500848) для ключа (myTrackingRectTag) слишком велико, чтобы соответствовать в 32 разрядное целое числоОшибка конструктора интерфейса: IBXMLDecoder: значение для ключа слишком велико, чтобы вписаться в 32-битное целое

Построение приложения как 32-битных работ, но работает это дает: PSMTabBarControlDemo [9073: 80f] *** - [NSKeyedUnarchiver decodeInt32ForKey]: значение (4654500848) для ключа (myTrackingRectTag) тоже большой, чтобы соответствовать 32-битовому целому

Не уверен, что это общая проблема IB, которая может возникнуть при перемещении между 64 и 32-битными системами или если это более конкретная проблема с этим кодом. Кто-нибудь еще сталкивается с этим?

ответ

0

Я добрался до сути и не имеет ничего общего с Interface Builder. Ошибка IB произошла от плагина PSMTabBarControl IB.

Для всех, кто работает в этом, в PSMOverflowPopUpButton.m изменения:

[aCoder encodeInteger:_myTrackingRectTag forKey:@"myTrackingRectTag"]; 

в

[aCoder encodeInt64:_myTrackingRectTag forKey:@"myTrackingRectTag"]; 

и

_myTrackingRectTag = [aDecoder decodeIntegerForKey:@"myTrackingRectTag"]; 

в

_myTrackingRectTag = [aDecoder decodeInt64ForKey:@"myTrackingRectTag"]; 

решил проблему для меня, и теперь она работает как для архитектур i386, так и для x86_64.

+0

Похоже, что _myTrackingRectTag также имеет значение для мусора, возможно, оно где-то неправильно инициализировано? –