-
Notifications
You must be signed in to change notification settings - Fork 336
1.1 Objective C の基礎
参考 : 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 というインスタンス変数を持っている(自動的に生成)
- nonatomic : 排他制御しない
- strong : オーナーシップをもっている
- -setName, -name という 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 メッセージを送ってみましょう。
はじめに
-
導入
-
1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)
-
UIKit 1 - container, rotate-
-
UIKit 2- UIView -
-
UIKit 3 - table view -
-
UIKit 4 - image and text -
-
ネットワーク処理
-
ローカルキャッシュと通知
-
Blocks, GCD
-
設計とデザインパターン
-
開発ツール
-
テスト
-
In-App Purchase
-
付録