読者です 読者をやめる 読者になる 読者になる

プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

iPhone/iPad/iPod touchプログラミングバイブル1章、2章 アプリ作成の基礎と文法

iPhone/iPad/iPod touchプログラミングバイブル1章、2章

1章

xcodeの機能説明から始まり、HelloWorldアプリを作る。
後半ではデバイス上で動かすための設定を解説している。

xcodeのメニューなどの解説

xcodeを触り始めて数ヶ月経つのに、未だに触ってないボタンやメニューが結構あるので解説はありがたい。
今までにもiPhone関連の本は何冊か読んでいるが、ここまで丁寧に解説してる本は初めてだ。

プロジェクトの基本設定

Info.plistに記録される設定。

パネル 機能
Summary アプリケーション基本設定の指定
Info アプリケーション設定の指定
BuildSettings ビルド設定の指定
BuildPhases ビルドフェイズの指定
BuildRules ビルドルールの指定

久しぶりに普通のテンプレートでプロジェクトを作成したら、_windowの宣言と@synthesizeがなくなっていた。
ARCなしでは、_windowの宣言がないのにAppDelegateのdeallocで[_window release];となっているので、どこで宣言されているのかと思いCmd+ダブルクリックしたら

@property (strong, nonatomic) UIWindow *window;

に飛んだので、この裏で_windowが宣言されるっぽい。

@propertyの周りがスッキリしたということだろうか。
release以外はself.windowでアクセスするようになっているので、よりプロパティの意味合いが強くなったという印象。

2章

Objective-Cの基本文法。
復習のつもりで読んでみる。

プロトコル

Javaにおけるインターフェースのようなもの。
一度に複数のプロトコルを実装できる。
メソッドの宣言の集合であり、クラスに対し実装すべきメソッドを定義する。

@protocol プロトコル名
- (戻り型) メソッド名:(引数型)引数名 ラベル名:(引数型)引数名;
//他のメソッドが続くかも
@end
//プロトコルを実装するクラス
@interface クラス名 : 親クラス <プロトコル名>
//プロトコルに宣言したメソッドを@implementationで実装

カテゴリ

クラスを分割したり、クラスに新しい機能を定義したりするための文法。
すでに提供済みのクラスにも新しい機能を加えられるので便利。

//NSString+trim.h
#import <Foundation/Foundation.h>
@interface NSString(Trim)
- (NSString*)trim;
@end

//NSString+trim.m
#import "NSString+trim.h"
@implementation NSString(Trim)
- (NSString*)trim{
  return [self stringByTrimmingCharactersInset:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
@end

//使い方
NSString *str = @"    aaa   ";
str = [str trim];
NSLog(@">%@.",str);

参考

iPhone/iPad/iPod touch プログラミングバイブル iOS 6/Xcode 4対応 (smart phone programming bible)

iPhone/iPad/iPod touch プログラミングバイブル iOS 6/Xcode 4対応 (smart phone programming bible)