Tôi không hiểu tại sao chúng ta phải gọi phương thức setSelector
trên NSInvocation
đối tượng khi thông tin đó đã được chuyển qua invocationWithMethodSignature
.Mục đích của phương thức setSelector trên lớp NSInvocation là gì?
Để tạo một đối tượng NSInvocation
chúng ta làm như sau:
SEL someSelector;
NSMethodSignature *signature;
NSInvocation *invocation;
someSelector = @selector(sayHelloWithString:);
//Here we use the selector to create the signature
signature = [SomeObject instanceMethodSignatureForSelector:someSelector];
invocation = [NSInvocation invocationWithMethodSignature:signature];
//Here, we again set the same selector
[invocation setSelector:someSelector];
[invocation setTarget:someObjectInstance];
[invocation setArgument:@"Loving C" atIndex:2];
Chú ý rằng chúng tôi thông qua bộ chọn để [SomeObject instanceMethodSignatureForSelector: someSelector];
và một lần nữa để [invocation setSelector:someSelector];
.
Có điều gì tôi thiếu không?
+1 - Tốt khi xem câu hỏi ở đây chưa được hỏi (và trả lời) một triệu lần rồi, và không được viết bằng biệt ngữ thư không thể giải mã được. :-) –
Một điểm nhỏ: 'signature = [SomeObject instanceMethodSignatureForSelector: someSelector];' phải là 'signature = [[SomeObject class] instanceMethodSignatureForSelector: someSelector]; hoặc chữ ký = [SomeObject methodSignatureForSelector: someSelector]; ' – Brynjar