問題タブ [dealloc]
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.
iphone - アプリの承認にはスーパーデロックが必要ですか
[super dealloc]
クラスで使用しない場合、iPhone アプリは承認されますか?
ここでは、次のビュー コントローラーを呼び出します。
}
これがデロックです
しかし、この場合、dealloc は呼び出されません。手動でビューを解放する必要があり、手動でそれを行うとクラッシュしましたsuper dealloc
iphone - 「viewDidUnload」でオブジェクトをゼロにするというAppleのアドバイスの説明?
「viewDidUnload」でオブジェクトを削除する以下のAppleの推奨事項(Core Dataチュートリアルにあります)に関してもう少し情報を提供できる人に興味があります。例えば:
- なぜこれが重要なのですか?nil'ingをリリースすることとは異なりますか?
- これはベストプラクティスですか/私はこれを行っていませんし、これを見ていません。私が見たiPhoneのサンプルコードでは考えていませんか?
コード:
iphone - 目的 C: サブクラス化、dealloc のオーバーライド
カスタム UITableViewCell のサブクラスを作成しています。スーパークラスには、dealloc メソッドで解放するいくつかのプロパティがあります。サブクラスにプロパティを 1 つ追加したので、dealloc メソッドをオーバーライドして、新しいプロパティを解放するようにしました。
私の質問は、dealloc メソッドをオーバーライドしたため、スーパー クラスの dealloc メソッドで解放されたプロパティは解放されないのでしょうか ([super dealloc] を呼び出しています)。MY dealloc メソッドでそれらを具体的に解放する必要がありますか?
ios - iOS のメモリ管理に関する質問
メモリ管理について質問があります。以前に init* メソッドで割り当てたインスタンス変数があります。プログラムのある時点で、このオブジェクトを保持しました。私の dealloc メソッドで、このオブジェクトを nil に設定した場合、彼は正しく割り当て解除されますか? 例を示しましょう。これは Ah クラスです:
と彼の実装:
私の質問は、GC がいつA クラスでdeallocを呼び出すかということです。bvrariableは適切に割り当て解除されますか?
私はこのオブジェクトを保持しているので、そのオブジェクトを解放するにはreleaseを 2 回呼び出す必要があるため、私の推測ではノーです。オブジェクトを nil に設定しても、メッセージを bvrariable オブジェクトに送信しているため、それらの割り当ては解除されません。しかし、ある人は私に反対のことを言いました。
誰かが私を啓発できますか?
アドバイスありがとうございます !!
ipad - UIPopoverControllerの割り当て解除の問題
ポップオーバーを使用して画像を表示しました。ユーザーがボタンをタッチすると、ポップオーバーがスライドショーとともに表示されます。
私はこのようにポップオーバーを初期化します: `
`detailViewPopoverはUIPopoverControllerです、私はそれを私の.hと宣言します。
私はこのようにポップオーバーを却下します: `
} `
アプリを実行すると、「-[UIPopoverController release]:メッセージが割り当て解除されたインスタンス0x1b29b0に送信され、アプリがクラッシュするまで機能します... UIPopoverControllerを解放する時間が長すぎることは理解していますが、どこにあるのかわかりません。私の実装は良いですか?
ご協力いただきありがとうございます
さらに情報が必要な場合はお知らせください。投稿を編集します
objective-c - dealloc で self.property = nil を使用しても問題はありませんか?
宣言されたプロパティがアクセサメソッドを生成することは知っていますが、これはどういうわけか単なる構文糖衣です。
self.property = nil
多くの人が彼らのdealloc
方法で使用していることがわかりました。
1) Apple のメモリ管理ドキュメント、p23 には次のように書かれています。
アクセサー メソッドを使用してインスタンス変数を設定してはならない唯一の場所は、init メソッドと dealloc です。
なぜすべきではないのですか?
2) Apple のObjective-C 2.0 では、p74
宣言されたプロパティは、基本的にアクセサ メソッドの宣言に取って代わります。プロパティを合成すると、コンパイラは存在しないアクセサー メソッドのみを作成します。メソッドとの直接的なやり取りはあり
dealloc
ません。プロパティは自動的に解放されません。ただし、宣言されたプロパティは、メソッドの実装をクロスチェックする便利な方法を提供dealloc
します。ヘッダー ファイル内のすべてのプロパティ宣言を検索し、マークされていないオブジェクト プロパティassign
が解放され、 マークされているオブジェクト プロパティが解放されていないことを確認できますassign
。注: 通常、メソッドでは、次の例に示すように、(set アクセサーを呼び出してパラメーターとして渡すのではなく) インスタンス変数を直接オブジェクト
dealloc
化する必要があります。release
nil
ただし、最新のランタイムを使用してインスタンス変数を合成している場合は、インスタンス変数に直接アクセスできないため、アクセサー メソッドを呼び出す必要があります。
メモの意味は?
私は見つけ[property release];
て、[self setProperty:nil];
両方とも動作します。
objective-c - Objective-C の NSTableViewDataSource の割り当て解除
私は現在objective-cを学んでおり、現在NSTableViewでトレーニングしています。
ここに私の問題があります:
データソースを持つように、Interface Builder を介してテーブルビューをコントローラーにリンクし、コントローラーに NSTableViewDataSource プロトコルを実装し、-(NSInteger) numberOfRowsInTableView:
と-(id) tableView:objectValueForTableColumn:row:
メソッドの両方を実装しました。
生のビジネス クラス (「人」) を作成し、そのコンテンツを NSTableView に表示することに成功しました。
しかしNSLog
、メモリが解放されたかどうかを確認するために、dealloc メソッドにいくつか入れましたが、配列と「個人」インスタンスが解放されないようです。
ここにコントローラーの私のdeallocコードがあります:
そして私の「人」クラスで
これらの解放は、アプリケーションのライフサイクルでいつ呼び出されることになっていますか? 窓が閉まるときに呼び出されると思っていたのですが、そうではありませんでした。
十分に明確であることを願って、
ありがとう :)
凧。
objective-c - (IOS 3.0の後でも)deallocでoutlet変数をnilに設定する必要がありますか?
アップルの<メモリ管理>でアウトレットについて話すときのドキュメント。
それは言う
カスタムビューコントローラクラスでは、viewDidUnloadを実装して、アクセサメソッドを呼び出してアウトレットをnilに設定できます。
この場合、アクセサメソッドを呼び出してnilを設定するとオブジェクトが解放され、ポインタをnilに設定すると、クラッシュを引き起こす可能性のある無効なポイントへのアクセスを防ぐことができるため、これは理解できます。
しかしその後、それは言う:
注:3.0より前のiOSでは、viewDidUnloadメソッドは使用できません。代わりに、次の例に示すように、setView:でアウトレットをnilに設定する必要があります。
さらに、UIViewControllerでのdeallocの実装の詳細のため、deallocでアウトレット変数をnilに設定する必要もあります。
1)deallocでもnilを設定する必要があるのはなぜですか?(deallocはオブジェクトのライフサイクルの最後のステップだと思います。他の誰もこのオブジェクトを介してアウトレットにアクセスすることはできません。)
2)iOS 3.0以降でもnilを設定する必要がありますか?(Xcodeが自動的に生成したコードはnilをアウトレット変数に設定せず、リリースするだけであることがわかりました)。
iphone - オブジェクトの状態をdeallocに保存しても機能しません
今、deallocメソッドでオブジェクトの状態( @public float
sをsに変換)を保存すると、NSString
間違った値が保存されます!?代わりに、リリースする直前に値を保存すると、正しい値が保存されます。最後[super dealloc];
に注意深く電話することに注意してください。どうしてこれなの?
objective-c - NSTimer は UIView で割り当て解除を無効にします
一部のビューを解放しても、dealloc は呼び出されず、タイマーは実行され続けます。
「timer = [NSTimer schedule....」の部分をコメントアウトすると、dealloc が呼び出されます。つまり、コードの他の部分はすべて正常に機能しており、タイマーが原因です。runTimer メソッドは空です。つまり、タイマーが私をいじっているだけです。