文字列からセレクターを作成する - NSSelectorFromString
2010/08/28
cocoa
objective-c
Objective-Cです。NSSelectorFromStringです。
文字列からセレクターを作成できます。
いろいろな生成ルーチンをランダムに呼ぶにはどうしようかなーと考えていて、ひとつの案として文字列からセレクタを作成して、
呼び出すという方法が浮かびました。
参考
以下コード
#import <Foundation/NSArray.h>
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>
@interface MyObj : NSObject {
}
- a1;
- a2;
- a3;
@end
@implementation MyObj
- a1
{
NSLog(@"** a1");
}
- a2
{
NSLog(@"** a2");
}
- a3
{
NSLog(@"** a3");
}
@end
int main(){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
id myObj = [MyObj alloc];
// NSSelectorFromStringを使ってるよ
SEL sel1 = NSSelectorFromString(@"a1");
// performSelectorを使ってるよ
[myObj performSelector:sel1];
[myObj performSelector:NSSelectorFromString(@"a2")];
[myObj performSelector:NSSelectorFromString(@"a3")];
[pool drain];
return 0;
}
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>
@interface MyObj : NSObject {
}
- a1;
- a2;
- a3;
@end
@implementation MyObj
- a1
{
NSLog(@"** a1");
}
- a2
{
NSLog(@"** a2");
}
- a3
{
NSLog(@"** a3");
}
@end
int main(){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
id myObj = [MyObj alloc];
// NSSelectorFromStringを使ってるよ
SEL sel1 = NSSelectorFromString(@"a1");
// performSelectorを使ってるよ
[myObj performSelector:sel1];
[myObj performSelector:NSSelectorFromString(@"a2")];
[myObj performSelector:NSSelectorFromString(@"a3")];
[pool drain];
return 0;
}
: