Objective-Cの学習中です。メソッド参照を配列に格納して、配列をループしてメソッドを呼び出すことができます。私は、インタプリタ言語の背景から来ているとRubyのような言語では、次の配列内のオブジェクトメソッドへの参照を格納する(Objective-C)
NSMethodSignature *signature = [objectOne methodSignatureForSelector:@selector(methodOne)];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setSelector:@selector(methodOne)];
[invocation setTarget:objectOne];
NSArray *methodArr = @[invocation];
for (int i = 0; i < [methodArr count]; i++) {
[methodArr[i] invoke];
}
でこれを達成するためにNSInvocationを使用していた私が見つけた次
method_arr = [objectOne.method(:methodOne), objectTwo.method(:methodOne)]
method_arr.each do |m|
m.call
end
最も近いもののような何かを行うことができます私が見つけたもう一つの方法は、メソッドを参照していないブロックを使用することなく、
NSArray *methodArr = @[^{
[objectOne methodOne]
}];
同様の結果を実現しますNSInvocationは少し退屈なようですこれを行うより良い方法があるのだろうかと思っていました。