2011-11-14 7 views
0

Facebook SDKを私が構築しているiOS5プロジェクトに統合しようとしています。ios5のFacebook SDKがクラッシュする

アドバイスの後、私はFacebook固有のファイルのコンパイラフラグを '-fno-objc-arc'に設定しました。これにより私のファイルにARCを維持しながら、プロジェクトを正常に構築することができます。

私は基本的なFacebook SDKの手順を実行しており、ログインに成功し、権限を設定しています。

[facebook requestWithGraphPath:@"me/friends" andDelegate:(id)self]; 

私は後者であるだけではなく、「自己」の「(ID)自己」と言っていた理由私にエラースロー:

warning: sending 'PhotoController *__strong' to parameter of incompatible type 'id<FBRequestDelegate>' [3] 

を私がしようとすると、グラフにアクセスするときに問題が来ます私はすべてのコールバックメソッドを実装しています。正常に呼び出された唯一の方法は、

- (void)requestLoading:(FBRequest *)request; 

です。データを受信するとアプリがクラッシュすると思われます。

私は結果NSZombieオンになり、ここにありますしている他のスレッドで提案パー

2011-11-14 13:40:29.896 Friend Carousel[9660:f803] facebook: <Facebook: 0x6e21550> 
2011-11-14 13:40:29.898 Friend Carousel[9660:f803] self: <PhotoController: 0x6e215a0> 
2011-11-14 13:40:31.115 Friend Carousel[9660:f803] *** -[PhotoController respondsToSelector:]: message sent to deallocated instance 0x6e215a0 

FacebookはFacebookのオブジェクトであり、PhotoControllerは(定義されたメソッドを持つ)のデリゲートです。

Facebook Requestオブジェクトが既にリリースされたデリゲートにメッセージを送信しようとしているようです。右?それがクラッシュを引き起こす原因です。

残念ながら、これは私のiOSの知識が私を傷つける場所です。これは私が間違っていることですか、それともFacebook SDKをARC対応のプロジェクトに組み込むことができませんか?私はここからどこに行くべきか本当に分かりません。

おかげで、

ケビン

答えて

1

は、私がここに刺してみましょう。私の野生の推測では、PhotoControllerがどこに割り当てられているかを見ることになります。それがivarに保持されておらず、単にFacebookオブジェクトに与えられている場合、デリゲートのプロパティは保持されないので、クラッシュするのは理にかなっています。言い換えれば、PhotoControllerを保持しているFacebookオブジェクトに依存することはできません。これは、デリゲートオブジェクトでは悪いことです。 (デリゲートは弱い参照であるはずです)Facebookオブジェクトがalloc'edで保持されていた場所であれば、PhotoControllerのコピーを保持してFacebookオブジェクトの寿命を延ばしておくべきでしょう。

+0

クリフ、FacebookオブジェクトはPhotoController内で作成されています。 PhotoController自身のコピーを作成する必要がありますか?私は完全に理解していない。 PhotoControllerは以下のようにRootViewControllerで作成されます:PhotoController * photoController = [[PhotoController alloc] init]; – thekevinscott

+0

それは、それでした! – thekevinscott

+0

Uuhh ...私は、私の答えが助けられたと思っていますか?あなたが私に正しい印をつけているのを見ます。上のあなたのコメントから判断して、私はあなたのクラッシュの原因となったメソッドのローカル変数としてインスタンス化してスプーンし、プロパティやivarに写真コントローラを格納するメソッドを修正したとも仮定します。どんな場合でも、私はあなたがそれを解決してうれしいです! :) – Cliff

関連する問題