問題タブ [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 投票する
2 に答える
21286 参照

objective-c - ARCではObjective-Cポインタを'void*'に暗黙的に変換することは許可されていません

これはどういう意味で、どのような選択肢がありますか?

ARCではObjective-Cポインタを'void*'に暗黙的に変換することは許可されていません

このようにAudioSessionInitializeを使用するiOS5にXcode3プロジェクトを移植しています

ここselfにViewControllerがあります。

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

iphone - iOS -- arc の下の initWith メソッド

昔は、次のような init メソッドを書くように訓練されていました。

フー.h:

Foo.m:

しかし、これらの id キャストは今やノーノーです。では、これらのメソッドはどのように見えるべきでしょうか?

編集:これはライブラリ用です。したがって、呼び出しコードがどのように見えるかはわかりません。

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

objective-c - ARCとxcode4.2を使用してアプリを開発しました。これをiTunesに送信するにはどうすればよいですか?

読んだあと:

iphone:iOS5とXCode4.2でアプリを送信しますか?

ARCを使用して、このテクノロジーを使用してアプリをアプリストアにリリースすることを期待することは、私には少し近視眼的だったかもしれません。私にとって最善の行動方針は何ですか?

  • Xcode 4を使用して、メモリ管理をやり直します
  • Xcode4.2がリリースされるのを待ちます
  • 私のすべての問題を解決し、私の夢を実現する他の魔法の方法

アドバイスありがとうございます。

更新:誰かがこれに迷い込んだ場合に備えて、Xcode4.2がまだベータ版であったときでした。最終結果:最終リリースを待つことに問題がない限り、ベータ機能を使用しないでください。

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

iphone - 新しい ARC メモリ管理で UIViewController の割り当てが解除されない

UIViewController サブクラスをナビゲーション スタックにプッシュしています。ただし、navigationController によって保持されているため、ポインタをスタックにプッシュした後、ポインタを「解放」して、最終的にポップされたときに viewController が解放されるようにします。

ただし、機能していません。viewController の dealloc メソッドが呼び出されることはありません。コードは次のようになります。

次のコードでも、私の newViewController は解放されていません。

私が理解していることから、新しい自動参照カウント (ARC) システムの下では、オブジェクトが何も指されないと、オブジェクトの割り当てが解除されます。作成中のviewControllerのdeallocメソッドにNSLogメソッドを入れたのですが一向に呼び出されません。

ここで何が欠けていますか?!

スタック オーバーフローに関する私の最初の投稿を読んでくれてありがとう :)

**編集: * *

謝罪します。自動解放プールにラップされた 2 番目のコードを試したところ、割り当てが解除されました。次に、自動解放プールなしで試してみたところ、適切に割り当て解除されました。昨夜何が起こったのかわかりません。

(2回目の編集:そして今、再び機能しなくなりました.ffffffuuuuuuuuuuuuuu)

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

iphone - ARCを使用してiOS4.0をターゲットにしている場合、弱参照を置き換えるにはどうすればよいですか?

私はXcode4.2を使用して最初のiOSアプリの開発を開始し、「ユーティリティアプリケーション」テンプレート(FlipsideViewControllerに付属しているもの)を使用してiOS5.0をターゲットにしていました。

ARCはコンパイル時の機能なので、iOS 4とも互換性があるはずだと読んだので、アプリを4.3にターゲットにして、コンパイルしてみました。そうすると、次のエラーが発生します。

FlipsideViewController.m:エラー:自動参照カウントの問題:現在のデプロイメントターゲットは自動化された__weak参照をサポートしていません

この行を参照しています:

その変数は次のように宣言されます。

「弱い参照」はiOS4でサポートされていないことは理解していますが、最初に弱い参照を使用する理由がよくわかりません。また、使用を避けるためにどのように書き直すのかわかりません。まだARCを利用しています(結局のところ、iOS 4と5で動作するはずですよね?)

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

iphone - メモリの問題か何か?

イメージをカルーセルにロードするアプリケーションを iPad で実行しています。全部で 138 枚の画像があります。その数を 100 に減らすと、アプリケーションは問題なくロードされます。ただし、138 で、アプリケーションはクラッシュするのではなく一時停止します。

ブレークポイントで示されているように、 viewDidLoad と最初のforステートメントに到達しています。問題は 2 番目のforステートメントにあります。

メモリの問題があると推測していますが、ARCで iOS 5 を使用しているので、手動でメモリ管理を行う必要はありません。

記憶に保持するにはあまりにも多くのことが起こっているのではないでしょうか? 138 個の画像 @ 1 つあたり ~146 KB です。これはおよそ 20 MB ですが、それだけで問題が発生する可能性はないと思います。

GDB は有用な出力なしで終了します。実際には出力はまったくありません。計測器を実行すると、一時停止が発生したときの実際のメモリ使用量はわずか 6.11 MB、CPU は 77.4% ですが、仮想メモリは 175 MB であることがわかります。

私が懸念しているのは、メモリの警告や実際のクラッシュさえなく、スレッドが一時停止するだけで、自動的に再開または強制終了できないことです。xcode 内から強制終了する必要があります。

0 投票する
2 に答える
6399 参照

objective-c - ARCを使用してブロック内にNSErrorを設定する

自動参照カウントを使用して、プロジェクトのブロック内からNSErrorポインターを設定したいと思います。以下は私のコードの簡略化されたバージョンです:

これはコンパイルされますが、変更するブロックのローカルNSErrorを作成しようとすると、変更される可能性があります。これは、列挙後に元のNSErrorを設定するために使用されerrorます (これは表示していません)。doSomethingWithItemerror

これはコンパイルに失敗し、次のエラーが発生します。

非ローカルオブジェクトのアドレスを__autoreleasingパラメータに渡して書き戻す

このエラーをグーグルで検索すると、Clangソースコード自体からの結果のみが返されます。

動作しているように見えますが、少し醜い解決策の1つは、内部および外部のエラーポインタを用意することです。

ブロック内からNSErrorを設定する正しい方法は何ですか?

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

iphone - ベース SDK 5.0 でコンパイルされたアプリは iOS4.x で動作しますか?

ベース SDK 5.0 でコンパイルされたアプリは iOS4.x で動作しますか?

4.0への展開ターゲットにしました。ARC は iOS4.x デバイスで動作しますか。同じアプリで両方をサポートする方法はありますか? iOS5 で ARC を使用している場合、 iOS4.xデバイスでメモリ管理は正しく行われますか?

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

cocoa - ARCを使用するLionでのビューベースのNSTableViewEXC_BAD_ACCESS

これは変です。NSTableViewを学習するための非常に単純なプロジェクトがあり、それは私のペン先に設定され、ビューベースのtableViewとして設定されています。また、dataSourceを設定し、コントローラーオブジェクトに委任しました。

ただし、これを実行して実行すると、EXC_BAD_ACCESSが取得され、トレースはメイン関数で開始され、スタックの残りの部分はCocoaの内部にあります(コードではありません)。

このプロジェクトがARCを使用していることを除いて、実際には何も特別なことは行われていません(これは新しいプロジェクトであるため、これがデフォルトでした)。

また、Analyzerを使用して、どこでもメモリ管理が不適切に行われておらず、問題がないことを確認しました。

dataSource / delegateを設定しなくてもクラッシュは発生しませんが、明らかにこれはアプリを構築するための非常に良い方法ではありません。

何か案は?

編集

デリゲートとdataSourceは両方ともIBで設定されます。コードは次のとおりです(ビューベース)。注意することが重要です。このコードが存在するかどうかに関係なくクラッシュが発生します。どちらの場合も同じクラッシュです。

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

ios - KVO と ARC の削除方法 Observer

ARCの下のオブジェクトからオブザーバーを削除するにはどうすればよいですか? オブザーバーを追加するだけで、それを削除することを忘れていますか? メモリを手動で管理しなくなった場合、どこで観察をやめますか?

たとえば、View Controller では次のようになります。

以前removeObserver:は、View Controller のdeallocメソッドを呼び出していました。