問題タブ [automatic-ref-counting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1285 参照

iphone - 非ARC(自動参照カウント)およびARCユーザー向けのオープンソース

Xcodeを使用したgitモジュールを介してコードを介して他のプロジェクトに配布されるオープンソースライブラリがいくつかあります。一部のプロジェクトは明示的な保持/解放を維持しますが、他のプロジェクトは自動参照カウントを活用したいと考えています。とにかく、ARCの有無にかかわらずXcodeプロジェクトで同じソースをコンパイルできるようにすることはできますか?静的ライブラリにコンパイルされた場合、それは機能しますか?

0 投票する
3 に答える
117 参照

objective-c - Objective-Cオブジェクトを私が宣言したものとはまったく異なるクラスとして宣言する

私が書いたメソッドでは、クラス'A'のインスタンスを宣言し、そのインスタンスでメソッドを呼び出しています。実行時にメソッドを実行すると、アプリがクラッシュします。'A'のインスタンスを宣言したにもかかわらず、認識されないセレクターがクラス'B'のインスタンスに送信されたと表示されます。どこかでメモリを正しく管理していない可能性があるため、メソッドを別のクラスに送信していると読みましたが、ARCを使用しているので、問題はありません。助けていただければ幸いです!

呼び出されているメソッド:

0 投票する
1 に答える
11370 参照

objective-c - ARCでの弱参照のゼロ化

MikeAshの「ZeroingWeakReferences」の記事の私の読みが正しければ、弱い参照はassignARCのない参照のようなものです。ただし、参照されるオブジェクトの割り当てが解除されると、「ダングリングポインター」(割り当て解除されたオブジェクトを指すポインターを意味する)を取得する代わりに、ポインターがに設定されnilます。

これは正しいですか?これは、または(ARCがアクティブな場合)とマークされたプロパティで発生しますか?weakassign

これが正しければ、これにより多くのSIGABRTが排除されます。

0 投票する
1 に答える
71713 参照

objective-c - カスタムdeallocとARC(Objective-C)

私の小さなiPadアプリには、オブザーバーを使用する「言語切り替え」機能があります。すべてのViewControllerは、その間に自分自身をオブザーバーに登録しますviewDidLoad:

ユーザーが[言語の変更]ボタンを押すと、新しい言語がモデルに保存され、オブザーバーに通知さupdateUi:れ、登録されたオブジェクトのセレクターが呼び出されます。

これは、TabBarControllerにビューコントローラがある場合を除いて、非常にうまく機能します。これは、タブバーが読み込まれると、ビューを初期化せずに子コントローラーからタブアイコンをフェッチするため、viewDidLoad:呼び出されないため、これらのビューコントローラーは言語変更通知を受信しません。このため、registerObject:呼び出しをinitメソッドに移動しました。

viewDidLoad:オブザーバーに登録していたときは、登録viewDidUnload:を解除していました。現在、に登録しているのでinit、に登録を解除するのは非常に理にかなっていdeallocます。

しかし、ここに私の問題があります。私が書くとき:

このエラーが発生します:

ARCは、「dealloc」の明示的なメッセージ送信を禁止しています

[super dealloc]スーパークラスが適切にクリーンアップされるように呼び出す必要がありますが、ARCはそれを禁止しているため、今は行き詰まっています。オブジェクトが死にかけているときに通知を受ける別の方法はありますか?

0 投票する
3 に答える
2883 参照

objective-c - ARC の下の id 配列メンバー インスタンス

私はこのようなものを書きたい:

しかし、コンパイラはそれについて不平を言います:

ARC で id 配列メンバー インスタンスを作成するにはどうすればよいですか? そして、その配列をどのように初期化しますか? mallocを使用していますか?新着[]?

大規模なライブラリを ARC に変換していて、多くの作業が発生するため、NSArray を使用したくありません。

0 投票する
1 に答える
971 参照

xcode - NSViewController で設定されていない IBOutlets

だから私は次のように設定された NSViewController (MyVC) を持っています:

これで、この NSViewController を ( 経由でMyVC *vc = [[MyVC alloc] init];) ロードしてウィンドウにロードすると、テキスト フィールドが適切に表示されます。ただし、上記の貼り付け (およびいくつかの BAD_ACCESS) が示唆するようvc.inputに、テキスト フィールドを正しく指していません。

ノート:

  • このプロジェクトは ARC を実行しています。
  • これは単純化や一般化ではありません。私はこの正確なコードを無駄に実行しました。
  • すべての IBOutlets は間違いなく適切に設定されています。
0 投票する
2 に答える
1304 参照

iphone - 異なるメモリ管理ARC/ARCなし

単純なARCコードを非ARCに変換する必要があります。比較的簡単でしたが、インスタンス変数の割り当てself.var = xxxを見逃しましたが、代わりにvar=xxxと記述しました。

ARCバージョンでは問題は発生しませんでしたが、非ARCバージョンでは確かにクラッシュが発生しました。

それは、自己なしでARCでインスタンス変数を割り当てることが実際にOKであることを意味しますか?だから彼らは保持されますか?

ありがとう!

ps ARCでプログラミングする方法を学ぶのに最適な情報源は何ですか?明らかなエラーを回避します-これまでのところ、問題はまったく見つかりませんでしたが、何かを見逃した可能性があることに神経質になっています

0 投票する
3 に答える
4889 参照

cocoa-touch - ARC:デリゲートメソッドで使用されるブロック内からEXC_BAD_ACCESSを取得する

私は何か間違ったことをしているに違いありませんが、自動参照カウントのドキュメントはそれが何であるかについてのヒントを私に与えません。私がやっていることは、デリゲートメソッド内からブロックコールバックを使用してメソッドを呼び出すことです。ブロック内から同じデリゲートにアクセスすると、アクセスが悪くなります。問題は、渡したオブジェクト(デリゲートにメッセージを送信しているloginController)が明らかに解放されないことです。ブロック内でアクセスしないと、問題なくメソッドを複数回呼び出すことができます。これが私のコードです:

NSZombieEnabledは何もログに記録せず、gdbからの使用可能なスタックトレースはありません。私はここで何が間違っているのですか?ポインタをありがとう!


編集:

問題の範囲が広いと思いました。上記のコールバックはNSURLConnectionDelegateメソッドから呼び出されます(ブロック自体はそのデリゲートの強力なプロパティであるため、ARCはBlock_copy()を呼び出す必要があります)。このシナリオでは、特別な測定を行う必要がありますか?

フロー(loginControllerは常に表示されたままです):

loginController

デリゲートを表示

NSURLConnectionDelegate

そして、これは私が悪いアクセスを取得する場所ですが、そのloginController変数にアクセスする場合に限ります...

0 投票する
1 に答える
10078 参照

objective-c - 自動参照カウントの問題:非ローカルオブジェクトのアドレスを__autoreleasingパラメータに渡して書き戻す

メソッドへのポインタにポインタを渡そうとしていますが、どうやらARCにはそれを行う方法にいくつかの問題があります。ここに2つの方法があります。

次のエラーが表示されます。

自動参照カウントの問題:非ローカルオブジェクトのアドレスを__autoreleasingパラメータに渡して書き戻す

次のコマンドが表示される行: