forked from mixi-inc/iOSTraining
-
Notifications
You must be signed in to change notification settings - Fork 0
1.1 Objective C の基礎
tamotamago edited this page Apr 16, 2013
·
9 revisions
参考 : Objective-C プログラミング
NSObject *obj = [[NSObject alloc] init];
[obj exeWithArg1:hoge arg2:fuga]
Objective C にはメッソドにラベルがある。
MixiSampleClass.h, m を作成。
MixiSampleClass.h
#import <Foundation/Foundation.h>
// [1] 列挙型
typedef NS_ENUM(NSInteger, SampleType){
SampleTypeHoge = 0,
SampleTypeFuga,
SampleTypePiyo
};
@interface MixiSampleClass : NSObject
@property (nonatomic, strong) NSString *name; //[2] property
-(id)initWithName:(NSString *)name sampleType:(SampleType)sampleType; //[3] instance method
+(NSString *) getStaticString; //[4] class method
@end
MixiSampleClass.m
#import "MixiSampleClass.h"
static NSString *const constString = @"const"; // [5]クラス定数
static NSString *staticString = @"static"; // [6]クラス変数
// [7] 無名カテゴリ
@interface MixiSampleClass()
@property (nonatomic, assign) BOOL isEnabled;
@property (nonatomic, assign) SampleType sampleType;
@end
@implementation MixiSampleClass
-(id)initWithName:(NSString *)name
sampleType:(SampleType)sampleType
{
self = [super init];
if(self){
_name = name; //[8] access iVar
_isEnabled = YES;
_sampleType = sampleType;
}
return self;
}
+ (NSString *)getStaticString
{
return staticString;
}
@end
定数に名前を付けて定義することができ、その集合に名前をつけることが出来ます
- name というインスタンス変数を持っている(自動的に生成)
- nonatmic : 排他制御しない
- strong : オーナーシップをもっている
- -setName, -getName という setter, getter を自動的に生成。(getter=hoge, setter=fuga)と明示的に命名することも可能
インスタンスメソッドには - をつけて宣言
クラスメソッドには + をつけて宣言
const をつけて宣言
static をつける
無名カテゴリ内で宣言した property やメソッドは private 扱いになる。
- 自クラス内のインスタンス変数を参照、代入するときは _name = hoge, fuga = _name (self.name も可)
- 他クラスのインスタンス変数の場合は obj.name
- MixiViewController の viewDidLoad で MixiSampleClass のインスタンスを生成してください。
- NSLog() を使って、生成したオブジェクトのプロパティを確認してください。
Objective-C では、あるクラスのメソッド群を別のモジュールとして宣言することが出来ます。その仕組みがカテゴリです。カテゴリは大規模クラスのメソッドを分割する他に既存のクラスへの拡張メソッドを作成することも可能です。
NSString クラスに拡張メソッドを実装してみましょう
NSString+HogeAddition.h
#import <Foundation/Foundation.h>
@interface NSString (HogeAddition)
-(NSString *)addHoge;
@end
NSString+HogeAddition.m
#import "NSString+HogeAddition.h"
@implementation NSString (HogeAddition)
-(NSString *)addHoge
{
return [NSString stringWithFormat:@"%@hoge", self];
}
@end
MixiSampleClass クラスのインスタンス変数 name に対して addHoge メッセージを送ってみましょう。
- 導入
- Objective C の基礎
- メモリ管理
- UIViewController1 - UIViewController のカスタマイズ
- UIViewController2 - ModalViewController
- UIViewController3 - ライフサイクル
- UIKit 1 - container, rotate-
- UINavigationController
- UITabController
- Custom Container View Controller
- Supporting Multiple Interface Orientations
- UIKit 2- UIView -
- UIView
- UIView のカスタマイズ
- UIView Animation
- UIKit 3 - table view -
- UITableView について
- UITableViewとNavigationController
- custom UITableViewCell の作成
- 4.4 UITableViewのその他のオプション、カスタマイズ
- UIKit 4 - images -
- UIImage (CoreGraphics)
- UIImageView
- Accets Library
- CoreImage
- UIKit 4 - text -
- UILabel
- UITextView
- KeybordNotification
- 非同期処理系
- NSURLConnection (json シリアライザ)
- Blocks
- GCD
- ローカルキャッシュ
- UserDefaults
- FileManager
- CoreData
- SQLite
- Instruments
- leak
- time profiler
- その他
- 単体テスト (GHUnit)
- 結合テスト (KIF)
- cocoaPods でライブラリ管理