15

setImageWithURLを呼び出すと、次のように失敗します。

[UIImageView setImageWithURL:placeholderImage:]:認識されないセレクターがインスタンス0x149a20に送信されました2011-12-14 18:11:38.060 [781:707]キャッチされない例外'NSInvalidArgumentException'、理由:'-[UIImageView setImageWithURL:placeholderImage:] :認識されないセレクターがインスタンス0x149a20に送信されました '

SDWebImageSDWebImageManagerを正常に使用できるため、プロジェクトと必要なヘッダーが正しく含まれていることを確認できます。

以下は、UIImageViewカテゴリメソッドを呼び出したコードです。setImageWithURL

NSURL* url = [NSURL URLWithString:@"www.abc.com/abc.png"];
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"abc.png"]];    
4

13 に答える 13

17

によると: 静的ライブラリでObjective-cカテゴリをリンクする

XCodeのリンカーのバグのため、ビルドターゲットを設定する「その他のリンカーフラグ」を設定する必要があります。次のようにフラグを設定すると、このエラーが解消されます。

-force_load ${BUILT_PRODUCTS_DIR}/libSDWebImage.a
于 2012-01-23T07:45:11.237 に答える
11

これで問題が解決します。[ビルド設定]タブを開き、[リンク]セクションで[その他のリンカーフラグ]設定を見つけて、[-ObjC]フラグを追加します。 ここに画像の説明を入力してください

于 2013-03-03T18:14:47.900 に答える
9

私のような誰かが、適切なインストール手順をすべて実行した後でも、ここで他のすべての回答(たとえば、force_loadまたはload_all)を確認しても問題が解決しない場合は、オンラインで検索した後に学んだことを次に示します。

  • この問題は、iPhone5Sまたは64ビットシミュレーターを使用している場合にのみ発生します
  • これはlibwebpの問題です

この問題の解決策: アプリに64ビットプロセッサが必要ない場合にのみこれを実行してください(この文が有効かどうかを知るにはiOSプログラミングに慣れていない)

  1. ビルド設定>アーキテクチャに移動します

  2. [アーキテクチャ]で、[Standard architectures (armv7,armv7s)

  3. [アクティブなアーキテクチャのみを構築する]で、両方で[はい]になっていることを確認します。DebugRelease

私のソース:https ://github.com/rs/SDWebImage/issues/494

私のように、あなたの問題を解決しようとしているときにこれを見つけた人たちにこれが役立つことを願っています=)

于 2014-01-30T00:21:29.767 に答える
6

最終的にすべての.hファイルと.mファイルをプロジェクトに挿入したところ、正常に機能しました。.aファイルと.hファイルのみを含めた場合にも同じエラーが発生しました。

于 2012-01-12T12:05:25.483 に答える
4

SDWebImageのドキュメントでは、「その他のリンカーフラグ」を-ObjCに設定する必要があると記載されています。これは私にはうまくいきませんでした。代わりに、-all_loadに設定しました。また、-ObjCを削除する必要がありました。何が起こっているかについての説明はここにあります:

http://developer.apple.com/library/mac/#qa/qa1490/_index.html

また、-ObjCが失敗する理由についても説明します。「重要:64ビットおよびiPhone OSアプリケーションの場合、-ObjCがカテゴリのみを含みクラスを含まない静的ライブラリからオブジェクトファイルをロードできないリンカーバグがあります。回避策は、 f-all_loadまたは-force_loadフラグ」

-all_loadを使用すると、実行可能ファイルのサイズが大きくなります。-force_loadを使用して、これをいくらか軽減できます。SDWebImage 2.7.3の場合、ビルド設定の「その他のリンカーフラグ」で「-load_all $(SRCROOT)/SDWebImage.framework/SDWebImage」を設定してこれを行いました。一部の情報源がアドバイスしているlibSDWebImage[ARC].aへのリンクは、私にはうまくいきませんでした。

ちなみに、Xcode 4.4では、ビルド設定を正しく変更するために、ゆっくりとダブルクリックする必要があるようです。通常のダブルクリックを実行すると、完全にねじ込まれ、機能していないポップアップが表示されます。

于 2012-11-10T07:09:41.463 に答える
2

libSDWebImage.aをビルドフェーズ>リンクバイナリとライブラリに追加する同じ問題を解決しました。

于 2015-01-20T13:24:48.607 に答える
1

下部にあるhttps://github.com/rs/SDWebImageのドキュメントを読むと、ダウンロードする正しいファイルのダウンロードリンクがあります。その例に従うと、それは完全に機能します。

私が犯した間違い、そして他の人のように思われる間違いは、githubプロジェクトをダウンロードしてそれを使ってみたことです。

于 2013-03-19T10:24:47.957 に答える
1

「ImageIO.framework」をメインプロジェクトにリンクすると、すべてがうまくいき始めました。

于 2013-05-01T15:20:31.730 に答える
0

「その他のリンカーフラグ」を-all_loadに設定することもできます。これにより、外部フレームワーク(filepickerフレームワークなど)がSDWebImageに対してリンクする必要があるという問題が解決されます。

于 2012-10-24T02:55:46.293 に答える
0

-force_loadは、このリンクの問題を修正するための基本的な問題(達成の問題が発生した場合)を修正しません。

  1. SDWebImageの編集スキーム、
  2. リリース用に設定されたスキームを実行する
  3. 実行(デバイスを使用)
  4. libSDWebImage.aはrelease-iphoneosディレクトリに生成されます。
  5. set target-> BuildPhase-> linkBinarywithlibrary..このlibを追加します。
  6. 終わり..
于 2013-04-23T04:57:42.797 に答える
0

AFNetworkingフレームワークを使用している場合は、コンパイルされたファイルにUIIMageView+AFNetworking.mが含まれていることを確認してください。

于 2014-01-02T13:17:07.323 に答える
0

リンクされたバイナリにlibSDWebImage.aを追加する必要があります。また、他のリンカーフラグも確認する必要があります。これは、-ObjCである必要があります。

于 2015-11-28T23:09:55.173 に答える
0

SDWebimagesのファイルをXcodeにプルするときに選択をチェックアウトし、追加されたフォルダーに「グループの作成」をマークし、「フォルダー参照の作成」をマークしないでください。

写真とまったく同じようにマークします。

ここに画像の説明を入力してください

于 2015-12-10T14:21:57.513 に答える