macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

methodForSelector:

セレクタからインプリメントを返します
-(IMP)methodForSelector:(SEL)aSelector

解説

セレクタからインプリメントを返します。
指定したメソッドの実装である関数へのポインタを返します。
関数として使うことができます。

返り値

( IMP )

インプリメント

引数

( SEL )aSelector

セレクタ

クラス

NSObject

Instance Methods

使用可能

10.0

参照

例文

#import "MyObject.h"

@implementation MyObject

//
- (IBAction)myAction:(id)sender
{
	NSMutableArray *result;
	NSEnumerator *rover;
	id s;
	NSArray *lines = [NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
	
	//実装
	IMP   impNextObject;
	//
	IMP   addObject;
	
	//変更可能配列を準備
	result = [NSMutableArray arrayWithCapacity:1];
	//配列を逆順のEnumeratorにする
	rover  = [lines reverseObjectEnumerator];
	
	//addObjectの実装
	addObject     = [result methodForSelector:@selector( addObject:)];
	//impNextObjectの実装
	impNextObject = [rover methodForSelector:@selector( nextObject)];
	
	NSLog(@"result %@",[result description]); 
	//関数で実装、順に読み出して追加していく
	//第一関数はid,第二関数はSEL、
	while( s = impNextObject( rover, @selector( nextObject))){
		addObject( result, @selector( addObject:), s);
		}
	NSLog(@"result %@",[result description]); 
	
}
@end