0

ARC対応のフレームワークを備えたARC対応のMacプロジェクトがあり、すべて正常にコンパイルされますが、ARC以外のフレームワークを実行するとフォームが表示されますが、ボタンをクリックすると、次のようなエラーがスローされます...

2012-11-10 23:32:11.191 TestApp[20691:303] -[__NSCFType next:]: unrecognized selector sent to instance 0x101c13070
2012-11-10 23:32:11.193 TestApp[20691:303] -[__NSCFType next:]: unrecognized selector sent to instance 0x101c13070
2012-11-10 23:32:11.198 TestApp20691:303 doesNotRecognizeSelector:] + 186
3 CoreFoundation 0x00007fff8e63a5ce forwarding + 414
4 CoreFoundation 0x00007fff8e63a3b8 _CF_forwarding_prep_0 + 232
5 AppKit 0x00007fff8ff78a59 -[NSApplication sendAction:to:from:] + 342
6 AppKit 0x00007fff8ff788b7 -[NSControl sendAction:to:] + 85
7 AppKit 0x00007fff8ff787eb -[NSCell _sendActionFrom:] + 138
8 AppKit 0x00007fff8ff76cd3 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 1855
9 AppKit 0x00007fff8ff76521 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 504
10 AppKit 0x00007fff8ff75c9c -[NSControl mouseDown:] + 820
11 AppKit 0x00007fff8ff6d60e -[NSWindow sendEvent:] + 6853
12 AppKit 0x00007fff8ff69744 -[NSApplication sendEvent:] + 5761
13 AppKit 0x00007fff8fe7f2fa -[NSApplication run] + 636
14 AppKit 0x00007fff8fe23cb6 NSApplicationMain + 869
15 AppSim 0x00000001000026f2 main + 34
16 libdyld.dylib 0x00007fff97c6c7e1 start + 0
17 ??? 0x0000000000000003 0x0 + 3

メインプロジェクトを非ARCに変換すると、問題が発生します...問題の原因とその回避方法を教えてください。

既存のプロジェクトを非ARCを使用するように変換するのではなく...

問題を再現する手順...

「OSXLionのサンプルプロジェクト、〜250KB」をからダウンロード

https://github.com/eternalstorms/ESSVideoShare-for-OS-X-Lion

メインプロジェクトをARCに変換し、... [yt uploadVideoAtURL:[NSURLfileURLWithPathで始まる行を任意のmovファイルにポイントして実行します。

[キャンセル]または[サインイン]をクリックすると、エラーが発生します...

4

2 に答える 2

2

サンプルコードにメモリリークがあります:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    ESSYouTube *yt = [[ESSYouTube alloc] initWithDelegate:self
                                             developerKey:@""];
    [yt uploadVideoAtURL:[NSURL fileURLWithPath:@"/path/to/mov"]];
}

ytリリースされることはありません。

を追加するか、ARCに変換することにより、そのリークをプラグインすると、UIがまだ画面に表示されている間に、インスタンスの割り当てが解除されているためrelease、クラッシュが発生します。ESSYouTubeESSYouTubeWindowController

サンプルコードは修正する必要がありESSYouTube、UIが画面に表示されている限りそれ自体を保持するか、割り当て解除時にUIを破棄する必要があります。

于 2012-11-11T21:33:21.367 に答える
1

ARCアセットと非ARCアセットを持つプロジェクトを持つことができます。まだ行っていない場合は、ARCが有効になっていないクラスをARCを使用してコンパイルしないように設定します。ここを参照してください:プロジェクト内の単一のファイルに対してARCを無効にするにはどうすればよいですか?

于 2012-11-11T20:29:47.180 に答える