Случайные сбои моего приложения - PullRequest
1 голос
/ 10 сентября 2010

Я просто кодировал еще кое-что для окна настроек в своем приложении, и я запускаю его, я получаю следующую ошибку: 2010-09-09 20:01:08.099 YM2612[12060:80f] An uncaught exception was raised

2010-09-09 20:01:08.102 YM2612[12060:80f] Cannot create BOOL from object <_NSControllerObjectProxy: 0x34cd30> of class _NSControllerObjectProxy

2010-09-09 20:01:08.105 YM2612[12060:80f] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot create BOOL from object

<_NSControllerObjectProxy: 0x34cd30> of class _NSControllerObjectProxy'

*** Call stack at first throw:

(

0   CoreFoundation                      0x90d9ebba __raiseError + 410

1   libobjc.A.dylib                     0x93aab509 objc_exception_throw + 56

2   CoreFoundation                      0x90d9e8e8 +[NSException raise:format:arguments:] + 136

3   AppKit                              0x925ae0ed _NSHandleBindingException + 108

4   AppKit                              0x91ff0652 _NSBoolFromValue + 490

5   AppKit                              0x920f226f -[_NSCheckBoxPlugin showValue:inObject:] + 144

6   AppKit                              0x91fbdb69 -[NSValueBinder showValue:inObject:] + 384

7   AppKit                              0x91fbd5b9 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 906

8   AppKit                              0x91fbd1af -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 280

9   AppKit                              0x91f379ad -[NSBinder _performConnectionEstablishedRefresh] + 85

10  AppKit                              0x91f2a0b8 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 721

11  AppKit                              0x91fd6003 -[NSNibBindingConnector establishConnection] + 156

12  AppKit                              0x91f053f3 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1249

13  AppKit                              0x91f03508 loadNib + 257

14  AppKit                              0x91f02900 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 228

15  AppKit                              0x91f02811 +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] + 158

16  AppKit                              0x91f0275c +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 383

17  AppKit                              0x91eff561 NSApplicationMain + 434

18  YM2612                              0x00002844 main + 30

19  YM2612                              0x000027fa start + 54

)

1 Ответ

5 голосов
/ 10 сентября 2010

Прочитайте полученное сообщение:

2010-09-09 20:01:08.102 YM2612[12060:80f] Cannot create BOOL from object <_NSControllerObjectProxy: 0x34cd30> of class _NSControllerObjectProxy

Эта вещь не может быть преобразована в BOOL. По-видимому, это selection контроллера объекта, который является прокси, как говорит имя класса этого объекта.

Итак, почему что-то пытается преобразовать его в BOOL? Для этого вы смотрите в трассировке стека:

4   AppKit                              0x91ff0652 _NSBoolFromValue + 490
5   AppKit                              0x920f226f -[_NSCheckBoxPlugin showValue:inObject:] + 144
6   AppKit                              0x91fbdb69 -[NSValueBinder showValue:inObject:] + 384
7   AppKit                              0x91fbd5b9 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 906
8   AppKit                              0x91fbd1af -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 280
9   AppKit                              0x91f379ad -[NSBinder _performConnectionEstablishedRefresh] + 85
10  AppKit                              0x91f2a0b8 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 721
11  AppKit                              0x91fd6003 -[NSNibBindingConnector establishConnection] + 156
12  AppKit                              0x91f053f3 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1249

Вы загружаете перо, и, как часть этого, оно подключает привязку, установленную в IB.

Итак, вы связали свойство, для которого требуется BOOL, со свойством, значение которого не может быть преобразовано в BOOL. Вам нужно взглянуть на перо (которое предполагает близость кадра 16 к кадру 17 - MainMenu.nib), чтобы увидеть, какие булевы свойства вы связали и с чем вы их связали, и связать то, что связано с контроллером selection к чему-то, что имеет больше смысла.

Возможно, вы имели в виду привязку к selectedObjects контроллера (который является массивом, а не прокси-объектом) с @count в качестве пути ключа модели?

Связывания, которые вы, скорее всего, будете связывать, которые принимают логическое значение, составляют enabled и editable любого элемента управления (кнопка, текстовое поле, ползунок и т. Д.). Но они не единственные, поэтому вам нужно посмотреть на каждый объект, у которого есть привязка, которую вы связали, особенно если какие-либо привязки enabled / editable, которые вы подключили, оказываются не виновники.

...