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

objective-c - AVAudioPlayerはARCですぐに再生を停止します

AVAudioPlayerかなりシンプルだと思ったMP3を再生しようとしています。残念ながら、それは完全には機能していません。これが私がしたすべてです:

  • テストのために、Xcodeで新しいiOSアプリケーション(シングルビュー)を作成しました。
  • AVFoundationフレームワークをプロジェクトとに追加しまし#import <AVFoundation/AVFoundation.h>ViewController.m

  • アプリの「ドキュメント」フォルダにMP3ファイルを追加しました。

  • ViewControllers viewDidLoad:を次のように変更しました。

コード:

残念ながら、オーディオは再生を開始した直後に明らかに停止します。コメントを外すsleepForTimeIntervalと、20秒間再生され、その後停止します。この問題は、ARCでコンパイルする場合にのみ発生します。それ以外の場合は、問題なく動作します。

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

cocoa - ARC を有効にして Snow Leopard にデプロイする方法

ARC に移行したい OSX アプリがあります。ベース SDK を 10.7 に設定すると、すべて正常に動作します。しかし、10.6に設定すると機能しません(_objc_releaseなどが見つからないため)。では、ARC を有効にしてアプリを 10.6 にデプロイするにはどうすればよいでしょうか?

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

objective-c - iOS 3.x での自動参照カウント

arc をオンにしてコンパイルされたアプリは、iOS 3.1.x デバイスで動作しますか? 理想的には、アプリを iOS 4.x 以降でのみ動作させたいと考えていますが、まだ iOS 3.x を実行しているユーザーがいます。iOS 3 を搭載したデバイスにアクセスできなくなりました。

誰もテストしましたか?

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

objective-c - プリコンパイルで ARC をチェックする

ARC コンパイル オプションを使用する場合と使用しない場合で作業したい iOS リファクタリング ライブラリがあります。#ifdefARCが利用可能かどうか、のようにコンパイル中に検出する方法はありますか?

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

objective-c - iOS 5 ブロック ARC ブリッジキャスト

この質問は、次の質問を参照しています: ブロックを使用してコールバック ロジックを簡素化する方法は?

私のヘッダーにはこれらのtypedefがあります

そして初期化で

この論文では、Block_copy は不要であると述べています。ただし、ブリッジキャストが必要です。コンパイラ メッセージは次のとおりです。

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

avfoundation - 自動保持カウント、AVFoundation: 非目的の C オブジェクトを含むディクショナリ。ARCでこれを行うにはどうすればよいですか?

実際に、ソース ファイルの一部を ARC に変換しています。ARC は非常に優れており、時間とメモリ リークを節約できます。実際、私は AVFoundation コードを変換しようとしていて、非常に特別なコード行で限界に達しました。

「colorspace」は CGColorSpaceRef 別名 CGColorSpace* のタイプです。CGColorSpace は構造体であり、id に変換できません。コードは常に私のために働いていたので、私はこれに非常に驚いています (色空間は CIImage によって正しく使用されています)。色空間が目的の C オブジェクトではないため、ARC を使用してコンパイラを実行できません。コンパイラ (ARC を使用) は、色空間をディクショナリに追加することを拒否します。

この辞書内の「色空間」を置き換える方法、またはこの色空間ポインタを使用しても問題ないことをコンパイラに伝える方法を知っている人はいますか?

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

ios - ARC Objective-C の出力パラメータ

Objective-C を使用していますが、ARC コンパイラでコードをコンパイルするときに、パラメータを指定せずにメソッドを作成して呼び出す方法がわかりません。

これは、非 ARC Objective-C で達成しようとしている種類のものです (これはおそらく間違っています)。

ここでドキュメントを読みました: https://clang.llvm.org/docs/AutomaticReferenceCounting.html

そしてここ: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html

...しかし、コンパイルされたものを取得するのは難しいと感じています。正しいものは気にしないでください。ARC Objective-Cに適した方法で、上記のコードの要点を書き直すことができる人はいますか?

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

iphone - ARCは本当にiOS4でサポートされていますか?iOS 4.2 SDKには、リンク時にARC関連のシンボルがありません

ARCがコンパイル時のものであり、iOS 4との下位互換性があると最初に発表されて以来、私は読んだり聞いたりしました。Xcode4.2の自動リファクタリングを使用して、プロジェクトをARCに正常にリファクタリングしました。 iOS 5.0 SDK、正常に動作します。ただし、iOS 4.2 SDKに対してコンパイルしようとすると、リンク時に失敗し、次の記号が表示されません。

  • _objc_retainAutoreleaseReturnValue
  • _objc_autoreleaseReturnValue
  • _objc_storeStrong
  • _objc_retain
  • _objc_release
  • _objc_retainAutoreleasedReturnValue

チェックしたところ、これらのシンボルは5.0には存在しますが、4.2には存在しません。

これはAppleが嘘をついたことを意味しますか?代わりに、私は混乱して何か間違ったことをしていると思いますが、何がわからないのです。

これは、Xcode 4.2(ビルド4C199)のGMリリースによるものです。

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

objective-c - ARC: カスタム セッターを使用した保持宣言済みプロパティの変換

ARC を使用するようにプロジェクトを変換しようとしています。

私はそのような宣言されたプロパティを持っています:

インターフェイスでの setter メソッドの宣言:

そして、次のようなセッターの実装があります。

「Objective-C ARC に変換...」ツールを使用しようとすると、エラーが発生します。

エラー: プロパティ 'someProperty' のタイプがアクセサー 'setSomeProperty:' のタイプと一致しません [-Werror,3]

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

xcode - XcodeとARCのデバッグの問題(deallocをスキップ)

ARCとカスタムdealloc関数の奇妙な問題のデバッグに時間を費やしました。

  1. 私はクラスをサブクラス化していNSOperationます
  2. この操作の完了ブロックを設定しました
  3. 操作は、非常にフラットなオブジェクトの強力なプロパティ(メソッドなし、自動ivar、2つの強力なプロパティ)によって参照され、このオブジェクトを呼び出すことができますDataRequest
  4. すべてのガイドラインに従って、完了ブロックはローカルオブジェクト(操作自体を含む)への弱参照のみを使用します
  5. コンパイラもアナライザも問題を生成しません
  6. DataRequest私が生成した操作への唯一の参照を保持し、操作完了ブロックで破棄されます。それは常に破壊されます(dealloc常に実行されます)
  7. 私の操作にはカスタムがありますdealloc。NSLog呼び出しは1つだけです。

...そして問題は:

これをデバッガーで実行すると、deallocのブレークポイントに到達することはなく、ログメッセージが表示されることもありません。主に操作が漏れていると思いました。

これをインストゥルメントで実行すると、すべて問題なく、システムコンソールにメッセージが出力され、Allocationsインストゥルメントは、カスタムdeallocを含む適切なスタックスナップショットから操作が解放されたことを報告します。リークは検出されませんでした。

デバッグとプロファイリングに同じコンパイラ設定を使用していると100%確信しています。

最後に最も紛らわしいのは、のカスタムバージョンを作成してそれ[DataRequest dealloc]に入れself.operation = nil;た場合、デバッガーからでもすべて正常に機能することです。

誰かがいくつかの違いを見ようとするコンパイラリンカーオプションのヒントを持っていますか?これはAppleツールのバグである可能性があります(私たち全員が自分たちのエラーのせいで大きな魚を非難する立場にありましたよね?)

...そしてはい、GDBとLLDBで試しました。結果は同じでした-何かを示している可能性があります。

ミニマルなサンプルを作成しようとしましたが、うまくいきました(実際);)

ありがとう