HideInInspector の罠

public class Abc : MonoBehaviour
{
public GameObject mObj;
...
}
みたいな変数を作る。
インスペクタでGUI的に mObj に値を割り当てた後に
やっぱりインスペクタでこのあたりを設定するのはやめよう、と思い
スクリプトだけを以下のように修正する。(この時インスペクタには触らない)
{
[HideInInspector] GameObject mObj;
}
すると、
mObjに値が設定されているがインスペクタからは見えないようになってしまう。

.sceneファイルをテキストエディタで開いたら、
↓こんな感じの記述が残っているのが確認できるはず。

mObj: {fileID: 2020468654}

こうなってしまうとインスペクタや、C#のソースをいくら眺めても値を設定していないように見えるが、シーンファイルにて値が設定されてしまっているので何か変な挙動を行うことがあるはず。

注意したい。

なんでこんなのを見つけたかというと、
大人気アセット「NGUI (version3.0.2)」のサンプル「Popup List」がそうなっていて読み解くのに時間がかかってしまったから。

pushViewControllerした途端にアプリが落ちる時

端末もしくはシミュレータが iOS5系 で
pushViewControllerした途端にアプリが落ちる、この瞬間に落ちる場合↓
[self pushViewController:vc animated:YES];

でも、iOS6系なら落ちない場合、

たぶんxibファイルとかのオートレイアウトがONになってる。
ビルドでエラーにならないからアプリ完成間際になって発覚してビビる。

オートレイアウトのオフり方はこのへん。
http://d.hatena.ne.jp/paraches/20120928/1348838724

つーか
2013年11月現在、iOS5対応はもう対応しなくてもえーんちゃうか? と思うんだけど
対応しておけば一応2009年発売iPodTouchまでカバーできるのでまだ捨てられないとか。。。

Android SQLiteOpenHelper getWritableDatabase getReadableDatabase との関係

AndroidSQLiteのラッパー、SQLiteOpenHelper

関数 getWritableDatabase getReadableDatabase、
こんな設計おかしいやん?
という挙動を見せるのでAndroidOSのソース(java)を見にいったら案の定おかしい。

これはアンドロイドOSの歴史に俺の名を刻むチャンス!
と思ったのもつかの間、最新版android-4.3.1_r1.0/ のバージョンだと修正されていることが判明。ちぇっ。

ソースはここで調べましたありがたいサービス。
https://sites.google.com/site/devcollaboration/codesearch

                                            • -

android-4.3.1_r1.0 未満ではこんな感じでおかしいです。

SQLiteOpenHelper クラスから派生して MyDBOpenHelper というクラスを作ったとした場合、

DBが無いときに
SQLiteOpenHelper.getReadableDatabase()
を呼ぶと
MyDBOpenHelper.getWritableDatabase()が実行される。つまり派生クラスの関数が呼ばれちゃう。

こうされちゃうと、オーバーライドした
MyDBOpenHelper.getWritableDatabase() で、何かの条件とかで NULLを返したい場合があったとしても、
迂闊にNULLを返すと
MyDBOpenHelper.getReadableDatabase()のほうがしくじることがあるのでカスタマイズ難しい。


具体的には俺がうまくいかなかったのは
「リードオンリーのDBにしたいのにできない」
ということです。

どちらにせよandroid-4.3.1未満の端末に対応しなきゃいけないので
リードオンリーのDBはうまく作れない、ということですね。
もっとローレベルのAPI叩いていけばできると思うけどめんどくさい。

C# で Too many characters in character literal 

	Application.LoadLevel('main');

で、「Too many characters in character literal」というエラーが出て
なんのこっちゃ? としばらく悩んでしまったんだけど、

なんのことはない文字列定義は '' じゃなくて "" で囲わないとあかん。JS脳。もしくはPHP脳。

androidのListView デフォルトのスタイル一覧


arrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1);

と、よくサンプルに出てくる simple_list_item_1 以外の
デフォルトというか、googleが用意してくれているスタイル一覧表示のページ

http://www.bcoder.com/java/android-java/different-sytles-to-show-data-in-listview/attachment/select_dialog_item


select_dialog_singlechoice
select_dialog_multichoice
select_dialog_item
preference_category
list_content
custom_list_layout >>> ?
activity_list_item >>> ?
two_line_list_item
test_list_item
simple_spinner_item
simple_spinner_dropdown_item
simple_selectable_list_item
simple_list_item_single_choice
simple_list_item_multiple_choice
simple_list_item_checked
simple_list_item_activated_2
simple_list_item_activated_1
simple_list_item_2
simple_list_item_1
simple_gallery_item
simple_expandable_list_item_2
simple_expandable_list_item_1
simple_dropdown_item_1line