問題タブ [uikit]
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 - main.m は本当に、メインの実行ループの自動解放プールがすべてのイベントによって作成される場所ですか?
その場合、すべてのイベントで main() 関数を呼び出す必要がありますよね? しかし、試してみたところ、アプリの起動時に「新しいイベント...」というログメッセージが表示されます。したがって、メインスレッドには別の自動解放プールが必要だと思います。
iphone - iPhone OS で自動解放プールをドレインまたは解放する必要がありますか?
ドキュメントは次のように述べています。
ガベージ コレクション環境では、ドレイン メッセージをプールに送信すると、必要に応じてガベージ コレクションがトリガーされます。ただし、リリースはノーオペレーションです。参照カウント環境では、drain は release と同じ効果があります。したがって、通常は release ではなく、drain を使用する必要があります。
私がそれを正しく理解すれば、ガベージ コレクションや参照カウントが存在するかどうかに関係なく、常に -drain を使用する必要があると彼らは言います。iPhone では GC がないので、とにかく -drain? を送信します。
残念ながら、このドキュメントは Cocoa についてのみ言及しており、Cocoa Touch や iPhone については言及していません。したがって、同じことが当てはまるかどうかはわかりません。
iphone - 特定の自動解放プールにオブジェクトを追加することは可能ですか?
ドキュメントには、NSAutoreleasePoolのaddObject:メソッドがあります。
私はこれについて考えました:
NSString * myString = [[NSString alloc] initWithCString: "これは機能しますか?"]; [thePool addObject:myString]; [anotherPool addObject:myString];
それは可能ですか?自動解放プールスタックの一番上のオブジェクトにのみオブジェクトを追加できることを常に読んでいます。
iphone - 自己実装のゲッターが返されたオブジェクトを保持して自動解放する必要があるのはなぜですか?
例:
セッターは実際にそれをすでに保持していましたよね?実際、誰もセッターをバイパスするべきではありません...では、なぜゲッターはオブジェクトを返すだけではないのでしょうか。実際にはすでに保持されています。それとも、その間に別のオブジェクトがセッターに渡される場合に備えて、これが必要になるでしょうか?
objective-c - Getter がインスタンス変数の所有者であると言うのは有効ですか? または誰がそれを所有していますか?
実際には、そうです、Getter が所有者です。したがって、Getter を呼び出す人は、メモリを解放する責任を負いません。より正確には、オブジェクト自体が所有者ですが、Getter はインスタンス変数を他のユーザーに配信するメカニズムとして機能します。そうですか、それとも私が間違っていましたか?
iphone - Apple がメモリ管理プログラミング ガイドで言及している「最上位オブジェクト」はどれですか?
Cocoa Appleのメモリ管理プログラミング ガイドでは、トップレベル オブジェクトについて説明しています。彼らは、それぞれにコンセントが必要だと言っています。
ただし、アウトレットに格納しない最上位オブジェクトがある場合は、loadNibNamed:owner:options: メソッドによって返される配列または配列内のオブジェクトのいずれかを保持して、それらのオブジェクトが時期尚早に解放されるのを防ぐ必要があります。
では、「トップレベル オブジェクト」とは正確には何を意味するのでしょうか。彼らはルートビューとウィンドウについて話していると思います。ほかに何か?そして、このヒントは、ペン先を手動でロードしたい場合のためのものですか? それとも、どのペン先やケースにも適用されますか?
iphone - 「割り当て」で設定されたアウトレットをリリースする必要がないのはなぜですか?
私はこれを読んでいます:もし私がこのようなものを持っているなら:
そうすれば、メモリ管理について気にする必要はありません。-deallocメソッドで[anViewrelease]を実行する必要はありません。
なんで?
「assign」はコンパイラに「ねえ、このプロパティは誰もが割り当てたものを保持しません」と伝えるだけです。そして、あなたはするかもしれません
コンパイラは魔法のようにゲッターとセッターを作成します。セッターは次のようになります。
セッターは次のようになります。
正しい/間違っていますか?それが正しければ、セッターはnewAnView変数の所有権を主張しません。これは、「保持」プロパティではないためです。それを受け取り、インスタンス変数に割り当てます。したがって、所有権ポリシーを検討する場合、-deallocでanViewインスタンス変数を解放する必要はありません。オブジェクトはそれを所有していません。それは正しいですか?
iphone - なぜ[anViewrelease]、anView=nil;と書く必要があるのですか。[anViewリリース]ではなく;?
どこかで私はそれを読んでいました-メモリ不足の警告とすべてのサブビュー(=ペン先全体、私は思う)で非表示のビューを放棄することに関して、あなたはそれをするべきです:
それよりも
リリースを呼び出した後、これらのポインタをnil(=「オブジェクトなし」)に固定する理由は何ですか?推測させてください:他の方法で何らかの理由でビューを保持している可能性があります(これが発生する可能性がある場合の例はありますか?)、didReceiveMemoryWarningが発生し、現在表示されていないnib + view全体を解放します(つまり、マルチビューアプリで)。ユーザーがそのビューをもう一度見たいと思ったら、すぐにペン先をもう一度ロードしてから、すべてのビューをロードし、コンセントを接続して、BANG!他の保持されたビューは、メモリブリックのどこかにポインタがない状態でハングしているため、アプリがクラッシュするまで、大量のメモリリークが発生します。
正しい/間違っていますか?
iphone - 「割り当て」は @property コンパイラ ディレクティブのデフォルト設定ですか?
プロパティを定義して実行すると、次のようになります。
次に、それは「割り当て」プロパティだと思います。あれは正しいですか?
objective-c - @property と @synthesize の違いは何ですか?
私が理解しているように、@synthesize は実際にゲッターとセッターを生成しています。しかし、@property は何をしているのでしょうか。クールな @synthesize マジック関数のパラメーターを設定しているだけですか?