到現在爲止,我認爲-(void)startToDoSomethingWithThis:(That*)thing andThat:(That*)otherThing
有以下「方法簽名」,這是在同一時間也選擇:-startToDoSomethingWithThis:andThat:
Objective-C中方法簽名和選擇器之間有什麼區別?
但現在有人說,選擇是不一樣的方法簽名,並且該方法簽名還包含參數及其類型。那是對的嗎?
到現在爲止,我認爲-(void)startToDoSomethingWithThis:(That*)thing andThat:(That*)otherThing
有以下「方法簽名」,這是在同一時間也選擇:-startToDoSomethingWithThis:andThat:
Objective-C中方法簽名和選擇器之間有什麼區別?
但現在有人說,選擇是不一樣的方法簽名,並且該方法簽名還包含參數及其類型。那是對的嗎?
選擇器是類中方法的名稱。它被用來識別該方法,通常在被調用時。簽名是參數和返回類型的描述。它在調用任意方法(例如NSInvocation)時用於排列參數併爲返回值騰出空間。許多選擇器可能具有相同的簽名。
SEL aSelector = @selector(method:foo:);
NSMethodSignature *aSignature = [theObject methodSignatureForSelector:aSelector];
NSMethodSignature是objc_method_description類型的包裝。
這是正確的。選擇器是方法名稱。方法簽名是返回類型和參數類型的封裝。您可以使用+[NSObject instanceMethodForSelector:]
反思方法簽名,這會返回一個NSMethodSignature
對象。
'NSMethodSignature'不記錄它與之相關的選擇器。 – drawnonward 2010-06-22 16:41:49
@drawnonward感謝您糾正我。編輯答案。 – 2010-06-22 16:56:22
所以「方法簽名」確實由參數及其類型以及方法的返回類型組成? – dontWatchMyProfile 2010-06-22 17:05:04