問題タブ [initwithcoder]
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 - Objective C-カスタムビューとinitメソッドの実装?
in-code
との両方を初期化できるようにしたいカスタムビューがありますnib
。
initWithFrame
とメソッドの両方を書く正しい方法は何initWithCoder
ですか?これらは両方とも、初期化に使用されるコードのブロックを共有します。
interface-builder - OpenGL 3.2 コアを使用した NSOpenGLView
この質問が些細なことやナンセンスである場合は、事前にお詫び申し上げます...これは私が開発している最初のアプリの 1 つです。(残念ながら) 私は開発者ではありません。
のサブクラスであるカスタム ビューを含む NSWindow がありますNSOpenGLView
。
NSWindow
と はNSOpenGLView
Interface Builder で作成されるため、どちらも必要ありinit
ませNSOpenGLContext
んNSOpenGLPixelFormat
。
最近 OS X Lion に切り替えたので、新しい OpenGL 3.2 を活用したいと考えています。
Appleのドキュメントから、OpenGL 3.2を有効にするには、次のように書くだけでよいことがわかりました。
を初期化する前にNSOpenGLContext
.
これは(私にとっても)非常に簡単ですが、アプリにこれを実装するにはどうすればよいinit
NSOpenGLContext
ですか?
NSOpenGLView
は Interface Builder から作成されるため、メソッドは-initWithFormat:shareContext:
呼び出されません。
-initWithCoder:
したがって、私は次のような方法でメソッドをオーバーライドしようとしました:
OpenGL 3.2 は、によって報告されたように正しく読み込まれますglGetString(GL_VERSION)
が、作成されたコンテキストはアプリと対話しなくなりました...ビューには何も描画されません..
知っていることはすべて試しました...しかし、これを解決できません。
代わりにどうすればいいですか?
iphone - NSCoderを使用した静的シングルトンオブジェクトの初期化
私はiPhoneアプリに取り組んでおり、共有シングルトンクラスでいくつかの問題に直面しています。共有シングルトンを使用して2つの変数を格納して
int gameRuns
いint totalScore
ますが、「gamRuns」はユーザーがアプリを読み込むたびに増分するだけで、「totalScore」は明らかです:D
問題は次のとおりです。アプリがこのコードを使用して読み込まれるときに、独自のメソッドを使用してシングルトンと初期化を読み込みます。
他のクラスからこのクラスを参照し、常に同じオブジェクトへのポインターを取得できるため、これはうまく機能しています。したがって、これは他のオブジェクトから正常に機能します。
ここで、NSCoderプロトコルを追加し、次の2つのメソッドinitWithCoder
を追加しました。encodeWithCoder
アプリが読み込まれると、保存された状態がすでに存在するかどうかを確認します。存在する場合は、そのファイルを使用してクラスをアーカイブ解除します。存在しない場合は、上記のカスタムメソッドを使用してそのクラスを初期化し、デフォルトを設定してエンコードします。保存された状態になるようにファイルに保存します。コードは次のとおりです。
これで、ifステートメントの最後の行が完全に機能し、期待どおりにアプリをロードするたびにインクリメントされ、本当に嬉しいです(笑)。
ただし、次のようにして別のクラスのシングルトンの参照を取得しようとすると、問題が発生します。
それは常に1にカウントバックしますが、何が起こるかはわかっていますが、それを解決するための最良の方法を訴えることはできませんinitWithCoder
。シングルトンの場合、静的オブジェクトを返さず、新しいオブジェクトを作成しsharedLevelStateInstance
ます。私の最初のカスタムメソッドで、ハードコードされたデフォルトに初期化します。
StackOverflow、助けてくれませんか?!
毎回新しいオブジェクトを割り当てることなく、同じオブジェクトへの参照を取得するための最良の方法を知る必要がありますinitWithCoder
。
ありがとう :)
objective-c - シングルトンで initWithCoder と NSUarchiver を実装するのに助けが必要
iOS 5 アプリでアーカイブを機能させる方法がわかりません。初期化時に存在する場合、plist データを取得したいシングルトン SessionStore があります。SessionStore は NSObject から継承し、1 つの ivar (NSMutableArray *allSessions) を持ちます。これを plist ファイルからロードします。これが SessionStore.m です 問題が明らかなのか、それとももっと情報が必要なのかわかりません... ありがとうございます! ネイサン
AppDelegate.m では、終了時に plist ファイルを保存します。
ios - NSCoding とデフォルト値の保存/読み込みの問題
iPhone アプリのコードを書いていますが、デフォルトのデータを正しくロードするのに問題があります。Ray Wenderlich 著の「Learning Cocos2d」の例に基づいてコードを作成しています。
アプリを完全に削除して新しいデータから開始しようとしても、アプリが矛盾してデータをロードしようとしないか、データがあると誤って考えて null をロードするようです。
containsValueForKey を使用して値が存在するかどうかを確認し、それをロードするか、デフォルト値をロードしますが、新規インストールでも、containsValueForKey はデータを検出し、デフォルトをロードしません。xcode のオーガナイザーで、デバイスのファイル構造を確認し、保存するように指定した Documents フォルダーにファイルが含まれていないように見えるため、何を取得しているのかわかりません。
私の推測では、問題は initWithCoder 関数に関係していると思います。時々不思議なことに機能を通過するようですが、常にではありません。もう 1 つの奇妙な点は[[GameManager sharedGameManager] save]
、プレーヤーがハイスコアを取得したときに呼び出すことです (ここには示されていませんが、コードはこの ObjectiveList とまったく同じで、int のみです)。正しく保存されているように見えます。
そして今、コード:
GCDatabase.h
GCDatabase.m
GameManager.h
GameManager.m (強制的にロードしようとしてロード関数を追加しましたが、機能していないようです)
ios - initWithCoderでdrawLayerが呼び出されていませんか?
いくつかのプロパティで UIView をコピーしようとしています。UIView は drawLayer: メソッドをオーバーライドしてカスタム形状を描画します。
プロパティを取り戻すために、NSKeyedArchiver、ペーストボード、および NSKeyedUnarchiver を使用しています。UIView のインスタンスが作成され、プロパティが設定されます。これまでのところすべて問題ありません。
一部のプロパティは drawlayer メソッドで作成され、コピーされた値ではなくデフォルト値を持ちます。私の質問は、initWithCoder が呼び出され、インスタンスが作成されたときです。drawRect または drawLayer は呼び出されませんか? なんで?
xcode - cpp モデル オブジェクトを NSData に変換することは可能ですか?
作成したローカル サーバーにモデル オブジェクトを渡そうとしています。モデル オブジェクトは cpp クラスです。ストリームに書き込めるように、データに変換する必要があります。Coder メソッドを使用してクラスをアーカイブしようとすると、エラーが発生しました。
これを行うためのより良い方法はありますか?これに関するヘルプや洞察をいただければ幸いです。
ありがとうございました...
objective-c - initWithCoderがアイテムを正しく初期化しないのはなぜですか?
のサブクラスがありUITableViewCell
ます。私のサブクラスにはいくつかUILabel
のが含まれています。サブクラスでこれらのラベルを、私のすべてのテーブルビューセルに適用されるデフォルト設定に初期化する必要があります。
私はこれに使うべきだと読んだinitWithCoder
。関数が呼び出されており、関数のinitWithCoder
各行をステップスルーでき、モーションを通過しているように見えます。ただし、アプリケーションを実行すると、適用されているプロパティが表示されません。最も注目すべきは、フォントが変更されていないことです。UILabel
自分で変更しているプロパティが実際に保存または表示されているとは思いません。
このサブクラスを。と組み合わせて使用していStoryboard
ます。変更がに反映されないことはわかっていますがStoryboard
、コードが実行されているにもかかわらず、アプリケーションの実行時にも変更が反映されていません。
編集:オーバーライドを試みる前にinitWithCoder
、このロジックを実行するこれらのサブクラスにインスタンスメソッドがありました。そのインスタンスメソッドを。内で呼び出すだけですcellForRowAtIndexPath
。このメソッドは機能していましたが、このサブクラスのこのロジックを自動的に実行するのが便利だと思いました。
何か案は?私のコードは以下の通りです:
そしてヘッダー:
ios - iOS の initwithCoder と encodewithCoder
UIButton
を使用しての状態を保存しようとしましたencodeWithCoder:
私initWithCoder:
はこのように見えます:
button1
色、向き、角度などの状態を保存し、復元できますinitwithCoder;
が、ボタンをタップしても反応しません。外観は復元されましたが、IBAction
は呼び出されなくなりました。
objective-c - NSCoder を使用してカスタム オブジェクトを plist に保存する
そのため、NSCoding を使用してカスタム オブジェクトを plist に保存する必要があることに気付きました。
私が苦労している部分は、メソッドinitWithCoder
とencodeWithCoder
メソッドを実装した後にそれを行う方法です。id
それらはそれぞれとを返すvoid
ので、オブジェクトが NSData に変換された場合、またはオブジェクトに対して何を行ったとしても、データはどこにあるので、保存できますか?
このようにメソッドを設定しました:
これらのオブジェクト (既に NSMutableArray にある) を .plist に保存し、アプリを再度開くときに呼び出すための次のステップを理解しようとしています。
どんな助けでも大歓迎です!