NSObjectクラス

2013. 05. 07
・継承
無し(NSObjectはルートクラスです。)

・準拠
NSObject

・フレームワーク
/System/Library/Frameworks/Foundation.framework

・利用可能
iOS 2.0以降で利用可能

・宣言
NSKeyedArchiver.h
NSObject.h
NSRunLoop.h
NSThread.h



●概要

NSObjectは、ほとんどのObjective-Cクラス階層のルートクラスです。
NSObjectを通して、オブジェクトはランタイムシステムの基本インターフェイスを継承し、Objective-Cのオブジェクトして動作します。



●タスク

●クラスの初期化

+ initialize
+ load

●オブジェクトの生成、コピー、解放

+ alloc
+ allocWithZone:
– init
– copy
+ copyWithZone:
– mutableCopy
+ mutableCopyWithZone:
– dealloc
+ new

●クラスの識別

+ class
+ superclass
+ isSubclassOfClass:

●クラス機能のテスト

+ instancesRespondToSelector:

●プロトコルの適合テスト

+ conformsToProtocol:

●メソッドについての情報取得

– methodForSelector:
+ instanceMethodForSelector:
+ instanceMethodSignatureForSelector:
– methodSignatureForSelector:

●オブジェクトの表現

+ description

●破棄コンテンツのプロキシサポート

– autoContentAccessingProxy

●メッセージの送信

– performSelector:withObject:afterDelay:
– performSelector:withObject:afterDelay:inModes:
– performSelectorOnMainThread:withObject:waitUntilDone:
– performSelectorOnMainThread:withObject:waitUntilDone:modes:
– performSelector:onThread:withObject:waitUntilDone:
– performSelector:onThread:withObject:waitUntilDone:modes:
– performSelectorInBackground:withObject:
+ cancelPreviousPerformRequestsWithTarget:
+ cancelPreviousPerformRequestsWithTarget:selector:object:

●メッセージの転送

– forwardingTargetForSelector:
– forwardInvocation:

●動的メソッド解決

+ resolveClassMethod:
+ resolveInstanceMethod:

●エラー処理

– doesNotRecognizeSelector:

●アーカイブ

– awakeAfterUsingCoder:
– classForCoder
– classForKeyedArchiver
+ classFallbacksForKeyedArchiver
+ classForKeyedUnarchiver
– replacementObjectForCoder:
– replacementObjectForKeyedArchiver:
+ setVersion:
+ version

●非推奨メソッド

– finalize



●クラスメソッド

alloc

受信したクラスの新しいインスタンスを返します。

+ (id)alloc

戻り値
レシーバの新しいインスタンスです。

解説
新しいインスタンスのisaインスタンス変数は、クラスを表すデータ構造体に初期化され、他の全てのインスタンス変数のメモリは0に設定されます。

初期化工程を完了させるためにinit...メソッドを使用する必要があります。
例えば、

TheClass *newObject = [[TheClass alloc] init];

初期化コードを含むようにallocをオーバーライドしないでください。
代わりに実装するクラス固有のバージョンのinit...メソッドを実装する必要があります。

歴史的な理由により、allocはallocWithZone:を呼び出します。

利用可能
iOS 2.0以降で利用可能

宣言
NSObject.h


allocWithZone:

受信したクラスの新しいインスタンスを返します。

+ (id)allocWithZone:(NSZone *)zone

パラメータ
zone
新しいインスタンスを生成するメモリ領域を指定します。

戻り値
レシーバの新しいインスタンスです。

解説
新しいインスタンスのisaインスタンス変数は、クラスを表すデータ構造体で初期化され、その他のインスタンス変数は0に設定されます。

初期化工程を完了させるためにinit...メソッドを使用する必要があります。
例えば、

TheClass *newObject = [[TheClass allocWithZone:nil] init];

任意の初期化コードを含むようにallocWithZone:をオーバーライドしないでください。
代わりにクラス固有のバージョンのinit...メソッドを実装する必要があります。

このメソッドは歴史的な理由により存在しますが、メモリゾーンはObjective-Cで最早使用されていません。

利用可能
iOS 2.0以降で利用可能

宣言
NSObject.h


cancelPreviousPerformRequestsWithTarget:


performSelector:withObject:afterDelay:インスタンスメソッドで以前に登録されている実行要求をキャンセルします。

+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget

パラメータ
aTarget
performSelector:withObject:afterDelay:インスタンスメソッドで以前に登録されている要求のターゲットを指定します。

解説
同じターゲットaTargetを持つ全ての実行要求がキャンセルされます。
このメソッドは現在の実行ループ内のみの実行要求を削除するもので、全ての実行ループではありません。

利用可能
iOS 2.0以降で利用可能

宣言
NSRunLoop.h


cancelPreviousPerformRequestsWithTarget:selector:object:


performSelector:withObject:afterDelay:で以前に登録されている実行要求をキャンセルします。

+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(id)anArgument

パラメータ
aTarget
performSelector:withObject:afterDelay:インスタンスメソッドで以前に登録されている要求のターゲットを指定します。
aSelector
performSelector:withObject:afterDelay:インスタンスメソッドで以前に登録されている要求のセレクタを指定します。
anArgument
performSelector:withObject:afterDelay:インスタンスメソッドで以前に登録されている要求の引数を指定します。
引数の等しさはisEqual:を使用して決定されるので、値はオリジナルで渡されたものと同じオブジェクトである必要はありません。
オリジナルで引数としてnilが渡されている場合は、一致するようにnilを渡します。

解説
同じターゲットとしてaTarget、引数としてanArgument、セレクタとしてaSelectorを持つ全ての実行要求がキャンセルされます。
このメソッドは現在の実行ループ内のみの実行要求を削除するもので、全ての実行ループではありません。

利用可能
iOS 2.0以降で利用可能

宣言
NSRunLoop.h


class

クラスオブジェクトを返します。

+ (Class)class

戻り値
クラスオブジェクト。

解説
メッセージのレシーバである場合のみ、その名前でクラスを参照します。
それ以外の場合は全て、クラスオブジェクトはこのメソッドまたは類似するメソッドを介して取得する必要があります。
例えば、(NSObjectプロトコルで宣言されている)isKindOfClass:メソッドに引数としてSomeClassを渡す場合は以下のようになります。

BOOL test = [self isKindOfClass:[SomeClass class]];

利用可能
iOS 2.0以降で利用可能

宣言
NSObject.h



●インスタンスメソッド

copy

copyWithZone:で返されるオブジェクトを返します。

- (id)copy

戻り値
NSCopyingプロトコルのメソッドcopyWithZone:によって返されるオブジェクトです。

解説
これはNSCopyingプロトコルを採用するクラスの便利なメソッドです。
copyWithZone:が実装されていない場合は例外が発生します。

NSObject自体はNSCopyingプロトコルを採用していません。
サブクラスはプロトコルのサポートとcopyWithZone:を実装する必要があります。
NSObjectから直接継承したサブクラスで無い限り、copyWithZone:メソッドのサブクラス版は最初にsuperにメッセージを送信し、その実装を組み込む必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
NSObject.h


dealloc

レシーバによって占有されているメモリを解放します。

- (void)dealloc

解説
(解放されたメモリがまだ再使用されていない場合)解放されたオブジェクトにメッセージが送信されると、レシーバへの後続のメッセージはエラー表示を生成することがあります。

以下の例のように、オブジェクトのインスタンス変数以外のリソースを破棄するために、このメソッドをオーバーライドできます。

- (void)dealloc {
    free(myBigBlockOfMemory);
}

deallocの実装ではスーパークラスの実装を呼び出すことはありません。
deallocを使用してファイル記述子などの限定されたリソースの寿命の管理は避ける必要があります。

deallocメッセージは決して直接送信しないでください。
代わりに、オブジェクトのdeallocメソッドはランタイムによって呼び出されます。
詳細については『高度なメモリ管理プログラミングガイド』を参照してください。

特別な考慮事項
ARCを使用しない場合、deallocの実装では最後の命令としてスーパークラスの実装を呼び出す必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
NSObject.h


init

サブクラスで実装された(レシーバの)新しいオブジェクトを、メモリ割り当ての直後に初期化を行います。

- (id)init

戻り値
初期化したオブジェクト。

解説
initメッセージはコードの同じ行の中で、alloc(またはallocWithZone:)メッセージと組み合わせます。

TheClass *newObject = [[TheClass alloc] init];

オブジェクトは初期化するまで使用する準備はできていません。
initメソッドは、NSObjectクラスで定義されていない部分は初期化せず、単にselfを返します。

このメソッドのカスタム実装では、スーパーの指定イニシャライザを呼び出して、新しいオブジェクトを初期化して返す必要があります。
新しいオブジェクトが初期化できない場合、メソッドはnilを返す必要があります。

- (id)init {
    self = [super init];
    if (self) {
        // Initialize self.
    }
    return self;
}

いくつかの場合、initメソッドは代替オブジェクトを返す場合があります。
したがって後続のコードでは常にallocallocWithZone:によって返されたものではなく、initによって返されたオブジェクトを使用する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
NSObject.h


mutableCopy

ゾーンがnilのmutableCopyWithZone:で返されるオブジェクトを返します。

- (id)mutableCopy

戻り値
ゾーンがnilの場合の、NSMutableCopyingプロトコルのメソッドmutableCopyWithZone:によって返されるオブジェクトです。

解説
これはNSMutableCopyingプロトコルを採用するクラスの便利なメソッドです。
mutableCopyWithZone:が実装されていない場合は例外が発生します。

利用可能
iOS 2.0以降で利用可能

宣言
NSObject.h


performSelector:withObject:afterDelay:

現在のスレッド上で、遅延後にデフォルトモードを使用してレシーバのメソッドを呼び出します。

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

パラメータ
aSelector
呼び出すメソッドを識別するセレクタです。
このメソッドは重要な戻り値を必要とせず、id型の単一引数を必要とするか、引数がありません。
anArgument
メソッドを呼び出す際に渡す引数を指定します。
引数を取らない場合はnilを渡します。
delay
メッセージを送信する前の最小時間を指定します。
やむを得ず直後にセレクタを実行したい場合は、遅延を0に指定してください。
セレクタはスレッドの実行ループのキューに入れられ、できるだけ早く実行されます。

解説
このメソッドは、現在のスレッドの実行ループでaSelectorメッセージを実行するためのタイマーを設定します。
タイマーはデフォルトモード(NSDefaultRunLoopMode)で実行するように構成されています。
タイマーが発火すると、スレッドは実行ループの待ち行列(キュー)のメッセージを取り出し、セレクタの実行を試みます。
デフォルトモードで実行ループが実行できれば成功で、そうでなければ実行ループがデフォルトモードになるまでタイマーは待機します。

デフォルトモード以外の実行ループのモードでメッセージを受け取りたい場合は、代わりにperformSelector:withObject:afterDelay:inModes:を使用してください。
現在のスレッドがメインスレッドかどうか分からない場合、メインスレッドでのセレクタの実行を保証するperformSelectorOnMainThread:withObject:waitUntilDone:またはperformSelectorOnMainThread:withObject:waitUntilDone:modes:メソッドを使用してください。
待ち行列のメッセージを取り消す場合は、cancelPreviousPerformRequestsWithTarget:またはcancelPreviousPerformRequestsWithTarget:selector:object:メソッドを使用してください。

利用可能
iOS 2.0以降で利用可能

宣言
NSRunLoop.h



参考文献

NSObject Class Reference

Cocoa Fundamentals Guide/オブジェクトの作成






bose_soundlink_revolve
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
03 | 2017/04 | 05
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

bose_soundlink_revolve
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR