私はJavaScriptの世界から来たObjective-Cに不慣れで、クラスに「コールバック」プロパティを定義しようとしています。JavaScriptの世界では、関数を気ままに渡すことに慣れていますが、Objective-Cはそれほど寛大ではないようです。
これが私がそれをやろうとした方法です(可能な限り単純化しようとしています):
@interface CallbackThing : NSObject
@property (nonatomic) NSString *derpDerp;
@property (nonatomic) SEL callback;
@end
その後、別のクラスで...
CallbackThing *testCallbackThing = [CallbackThing alloc] init];
testCallbackThing.callback = @selector(methodInThisCLass);
最後に別のクラスで...
if (self.testCallbackThing.callback != nil){
[self.thatOtherClass performSelector:self.testCallbackThing.callback];
}
それはうまくいきます!私は自分自身をとても誇りに思っていました...まで...
「警告:selectorが不明なため、performSelectorがリークを引き起こす可能性があります!」
物事を読み込もうとすると、物事を行うための新しい方法はブロックを使用することであるように思われます...しかし、私が見た例はどれもこのシナリオではあまり意味がありません。