問題タブ [foundation]
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.
objective-c - stringWithFormat: with unknown datatype
I am making a framework and I have this code (conditions
is an NSDictionary):
If the value
is an NSString, quotes should be added, otherwise codes should not be added. However, if not an NSString, I don't know the datatype of value
, as it could be NSNumber, NSInteger, int, float, double, etc... I can't just use %@
or %d
but I'm sure someone on SO knows how to do this? Thanks.
objective-c - 直後に自動リリースが続く保持のポイントは何ですか?
私はいくつかのオープンソースコードを見て、作者が特定の方法で何かをした理由を理解しようとしています。
このクラスは、NSArray
push、popなどのスタックデータ構造を作成するためのラッパーです。
1つのメソッドはtopObject
、スタックの最上位のオブジェクトを返す方法であり、その実装は次のとおりです。
保持とそれに続く即時自動リリースとは何ですか?
私の最初の反応は、これによりアナライザーがメモリリークについて警告するのを防ぐことができるというものでしたが、保持/自動解放なしで分析しましたが、それでも警告はありませんでした。
ライフサイクルを見ると、オブジェクトが作成され、スタックにプッシュされて解放されるため、スタックがオブジェクトを所有します(基になる配列は追加時にオブジェクトを保持します)。
だから私はここで保持/自動解放の使用法を理解していません...
objective-c - NSData を NSString に変換し、null バイトを無視しますか?
NSData オブジェクトを NSString に変換する必要があります。意味不明なことを意図していますが、デバッグに必要です。
NSString の initWithData を使用すると、データに NULL バイトがあるため壊れます。nullバイトを無視して適切な文字列を取得するにはどうすればよいですか?
objective-c - NSMutableSet addObject
オブジェクトをラップするクラスがあり、(メソッドを使用して)NSMutableSet
オブジェクトをに追加するインスタンスメソッドがあります。addObject:
NSMutableSet
これはうまく機能containsObject:
しますが、オブジェクトをセットに追加する前にメソッド内で明示的に呼び出しているため、パフォーマンスの問題が発生しています。
3部構成の質問:
containsObject:
セットにオブジェクトを追加する前に呼び出す必要がありますか?- もしそうなら、私は実際にどのような方法を使うべきですか、
containsObject
それともcontainsObjectIdenticalTo:
? - そうでない場合、どの
contains
メソッドが内部で呼び出されaddObject:
ますか?これは私にとって重要です。オブジェクトを渡すcontainsObject:
とtrueが返されますが、渡すとcontainsObjectIdenticalTo:
falseが返されるからです。
objective-c - 自動リリースを使用する場合、実際にリリースされるのはいつですか。
時々、何かが自動リリースされるのだろうかと思います。さまざまなオブジェクトのdeallocにNSLogを追加しましたが、有用なものが見つかりませんでした。
自動リリースを使用すると、いつ何かがリリースされますか?予測できないのでしょうか、それとも余分なスレッドが実行されているのでしょうか。ありがとう。
ios - HTML を iOS の NSAttributedString にマップする方法
NSAttributedString initWithHTML addtion は Mac OS でのみ利用でき、iOS では利用できないためです。
objective-c - クラッシュするはずのSimpleObjective-Cのオーバーリリースはクラッシュしません。なんで?
私のデバッガーが壊れているか、私が理解していない根本的な何かがあります。
クラッシュするはずの非常に基本的なコマンドラインプログラムにいくつかの非常に基本的なコードがあります。ただし、クラッシュしていません。
logステートメントは、有効な文字列に期待されるように「長さ:5」を出力します。ただし、その時点で文字列の割り当てが解除され、exec_bad_access
エラーがスローされる必要があります。
デバッガーを接続した状態とデバッガーを接続しない状態でこのコードを試しましたが、どちらも同じ結果になります。また、有効(および無効)NSZombie
にしましたが、効果がないようです(NSZombie
オブジェクトの割り当てが解除されることはないため、最初はこれが問題だと思っていましたが、無効にしてもクラッシュしませんNSZombie
)。
ローカル.gdbinit
ファイルにブレークポイントを設定して、-[NSException raise]
やなどのブレークポイントを設定していますobjc_exception_throw
。NSZombie
また、それらをキャッチするために、多くのメソッドにブレークポイントを設定しています。
これらのブレークポイントが設定され、NSZombieが有効になっ[NSString length]: message sent to deallocated instance 0x100010d39
ていると、コンソールに出力されるようなものが表示されるはずですが、これは表示されません。NSLog
印刷の長さは5と表示されます。
NSURL
やなどの他のクラスでも同様の動作が見られNSNumber
ます。NSError
ただし、やなど、一部のクラスは期待どおりにクラッシュしNSObject
ます。
これはクラスクラスターと関係がありますか?それらはメモリ管理に関して同じ規則に従わないのですか?
クラスクラスターがこの問題に関連していない場合、私が見ることができる他の唯一の一般的な機能は、この方法でクラッシュしないクラスはすべて、CoreFoundationの対応するクラスと無料でブリッジされることでした。これはそれと関係がありますか?
iphone - iPhone でチャンクされた http リクエストを実装するにはどうすればよいですか?
現在、私は NSMutableURLRequest を使用しようとしており、HTTPBody を、このチャンクを提供するカスタム作成の NSInputStream に設定しています。
NSMutableURLRequest が NSInputStream クラスにますます多くのメソッドを実装するように要求し続けるという事実がなければ、これは問題ありません。最初に実装するように求められました - streamStatus: 実装はかなり簡単でしたが、今では _scheduleInCFRunLoop:forMode:... を要求しています...
基本的に、私はアルゴリズムからデータを生成しており、チャンクされたリクエストを介してサーバーに送信したいと考えています。
コードは次のとおりです。
objective-c - 同じオブジェクトを2つの異なる配列に追加できますか?
これは有効ですか:
同じオブジェクトへの参照を追加しているだけなので、私のお金はありますか、それともここで間違っていますか?
iphone - NSOperationQueueでKVOを使用するときに、辞書の値を間違って変更しますか?
「iPhone3のその他の開発」の同時実行の章で例を試していましたが、KVONSOperationQueue
を期待どおりに動作させることができません。を作成し、以下を使用してその配列をNSOperationQueue
観察します。operations
最初NSOperation
のものがキューに追加されると、その基になるoperations
配列(iOSのドキュメントではKVOに準拠していると記載されています)に追加されると思います。したがって、変更ディクショナリで、からのマッピングと、NSKeyValueChangeKindKey
からのマッピングを検索します。追加されたに。しかし、私はどんな種類の価値も見ていませんでした。NSKeyValueChangeInsertion
NSKeyValueChangeNewKey
NSOperation
NSKeyValueChangeInsertion
デバッガーがプロであり、すべてであることは知っていますが、ここにコピーするのに役立つものを用意するために、オブザーバーメソッドを次のように開始しました。
そしてそれは印刷します:
(これは単に適切にオーバーライドするSquareRootOperation
私のサブクラスであり、単にプロジェクト名です。)ただし、メソッドは1つの操作を挿入すると2回呼び出され、両方とも種類の値が1であることに注意してください。さらに、追加されたアイテムではなく、配列自体のようです。NSOperation
main
Stalled
NSKeyValueChangeSetting
NSKeyValueChangeInsertion
newValue
oldValue
何か案は?ありがとう!