タグ : Objective-C

Objective-Cでインスタンス変数はアンダースコアで開始する

浦島太郎状態だったXcode4をさわってリハビリ中。よくみるとXcodeが生成するコードのテンプレートがだいぶかわっている。特に気になったのが以下の点。

インスタンス変数の宣言がなくなってる

@interface DelegateDemoAppDelegate : UIResponder 

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) DelegateDemoViewController *viewController;

@synthesizeの書式が変わっている

@implementation DelegateDemoAppDelegate

@synthesize window = _window;
@synthesize viewController = _viewController;

インターネットの大海を探索してみたところ、以下のブログで明快に説明されていた。

プロパティに対応するインスタンス変数の命名規則について – Awaresoft

なるほど、欧州最新形では、インスタンス変数にはアンダースコアのprefixをつけ、ヘッダで宣言もしないらしい。全然しらなかった。インスタンス変数とプロパティの使い分けは以前からなやましかったので、これで統一されたのであればスッキリ。

あと関係ないけど、Xcode4になってから、Interfce Builderとの連携が結構パワーアップしている。

[Xcode][IB] IBOutletやIBActionをマウス操作で接続 – iOS 開発ブログ Natsu’s note

この操作でもアンダースコア原則を守ってくれるのかと思いきやそうはならなかった。

Core Data で NSRangeException

古いモデルがシミュレータに残っていたのが原因?アイコン長押しでアプリを削除してやりなおしたら大丈夫になりました。

iPhone SDKの入れ替え

iPhone SDK 3.2.1から3.2.2に入れ替え。3.2.1をアンインストールしてから3.2.2を入れた。

アンインストールはターミナルで以下のコマンドを実行する。

$ sudo /Developer/Library/uninstall-devtools --mode=all

インストールはdmgファイルをマウントしてインストールスクリプトを実行するだけ。

うちのMac環境はSnow Leopardオンリーだから関係ないけど、Leopard用のiPhone SDKがダウンロードできなくなっていた。古い環境もダウンロードできればいいのに。

■入れ替えた後に「内部エラー」が発生する場合
error

XCode.plistを削除する。

$ rm ~/Library/Preferences/com.apple.XCode.plist

iPhone Core Dataについて

SQLを書くのは苦にならないのですがいいかげんSQLite3を直で使うのはよくないと改心し、Core Dataに関して調べてみました。

日本語ドキュメントっていまいち探せません。Google検索からしかリンクが見つからなかったのでどこから入ればいいのかしばらくうろついてしまいました。