月別アーカイブ: 2012年2月

ORA-01861: literal does not match format string

オラクルを触っていて、以下のエラーが発生。
ORA-01861: literal does not match format string

<間違い>
update “XXXXX”.”YYYYY” set “APDAY” = ‘2012/02/29 12:34:56’ where “ZZZZZ” = 20000734

<正解>
update “XXXXX”.”YYYYY” set “APDAY” = TO_DATE(‘2012/02/29 12:34:56′, ‘yyyy/mm/dd hh24:mi:ss’) where “ZZZZZ” = 20000734

iPhone/iPadアプリのiOS5対応

最初のiPhoneアプリをリリースして、1年半。放置していましたが、サポートサイトに「iOS5で動かないよ」という書き込みが。
最新のXCodeでコンパイルし直せばいいんじゃないのと、mac miniを立ち上げて、最新版のXCodeをインストールしようとすると、「Lionに上げろ」という。しょうが無い確かオンラインでダウンロードしてアップデートできたはずと、インストールしようとすると、「Core 2 Duo以上じゃないとだめ」といういう。残念!!うちのmac mini は、Core Soloでした。
数千円の売上しか上がってないのに、数万かけて新環境をつくるのもなんだかなあと思っていたら、知り合いからMacBookを借りることができたので、調査を始めました。

Lionまでインストールされていた状態だったので、XCodeの最新版をインストール。
プロジェクトを取り込んでみると、Warningがいくつかでていたので、それはちゃちゃっと直す。
さて、iOS5エミュレーターで実行。
だめでした。。。

EXC_BAD_ACCESSとか言っているので、何かメモリアクセスの部分でエラーになっているようです。
しかし、デバッガがとまった場所は、appleのライブラリ内なので、自分のコードのどこが影響しているのかわかりません。
Googleでいろいろ検索したところ、以下のサイトにたどり着きました。

http://program.station.ez-net.jp/special/xcode/xcode4/leak-check.asp

簡単に設定を記すと、
(1)アップルメニューのProductからEdit Scheme…を選択。
(2) “Run” スキームの “Diagnostics” タブの中から “Enable Zombie Objects” を選択。
で、エラーの原因となっているところがわかるらしい。
では、実行!!
おお!!確かに、自分のコード内でひっかかりました。

さて、ここからが本題。
ポインタ変数にアクセスしているところで、エラーになっている様子。
さて、ここでもいろいろググります。
で、たどり着いたサイトがここ。

http://www.zero4racer.com/blog/88

「2.オブジェクト型を生成する時には、必ずプロパティを作成する」の項目が該当していたよう。
ここで記載されているようにポインタ変数を、@property,@synthesize宣言した上、アクセスするときは、self.xxxxxのようにアクセスすとことが必要ということらしい。

さて、上記の修正を施した後、実行。
さて、どうか。。。。うまくいった!
やった~

iOS5になって、メモリ管理が厳しくなったようですね。

あとは、リリースするだけと思ったが、そこにも難関が。。。
続きは次のエントリで。