で呼び出すとします
[self methodname]
その他
[self performSelector:@selector(methodname) withObject:nil];
で呼び出すとします
[self methodname]
その他
[self performSelector:@selector(methodname) withObject:nil];
違いはありません。
のドキュメントから直接performSelector:
このメソッドは、メッセージを受信者に直接
performSelector:
送信するのと同じです。aSelector
たとえば、次の 3 つのメッセージはすべて同じことを行います。id myClone = [anObject copy]; id myClone = [anObject performSelector:@selector(copy)]; id myClone = [anObject performSelector:sel_getUid("copy")];
ただし、特定のケースに違いはありませんが、存在する理由performSelector:
は、ドキュメントで説明されているように、コンパイル時に使用できない可能性がある任意のセレクターを呼び出すことができるためです。
ただし、この
performSelector:
メソッドを使用すると、実行時まで決定されないメッセージを送信できます。変数セレクターは引数として渡すことができます:SEL myMethod = findTheAppropriateSelectorForTheCurrentSituation(); [anObject performSelector:myMethod];
上記の考慮事項は、2 つのバリアントperformSelector:withObject:
にも適用されますperformSelector:withObject:withObject:
。
また、これは別の一連のメソッドには当てはまらないことに注意してください。
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: