Có cách nào để tìm hiểu - trong thời gian chạy - liệu một phương thức đã cho có thuộc loại variadic không? Một cái gì đó như method_getTypeEncoding()
; điều đó sẽ không cho tôi biết liệu một phương thức có chấp nhận số lượng đối số biến hay không. Hoặc là có thể có một mẹo để nói như vậy?Xác định nếu một phương pháp Objective-C là variadic trong thời gian chạy
5
A
Trả lời
6
Nhận xét của Robert là chính xác. Xem xét:
@interface Boogity
@end
@implementation Boogity
- (void)methodWithOneIntArg:(int)a {;}
- (void)variadicMethodWithIDSentinel:(id)a, ... {;}
@end
Chạy strings
trên nhị phân kết quả sản xuất (đó cũng là cổ phiếu main()
):
strings asdfasdfasdf
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
[email protected]:8i16
[email protected]:[email protected]
Hello, World!
Nếu tôi thay đổi phương pháp variadic được khai báo là - (void)variadicMethodWithIDSentinel:(int)a, ...
, các strings
đầu ra trở thành:
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
[email protected]:8i16
Hello, World!
Vì vậy, không, không có cách nào để kể.
Các vấn đề liên quan
- 1. Xác định các thông số mẫu trong thời gian chạy
- 2. Xác định loại chung loại thời gian chạy
- 3. là nó có thể ghi đè lên một phương pháp trong thời gian chạy?
- 4. thời gian ra một phương pháp gọi
- 5. Xác định hệ điều hành trong thời gian chạy
- 6. Chạy phương pháp lực trong khoảng thời gian được chỉ định
- 7. Phương pháp hết thời gian trong java
- 8. Lập trình xác định phiên bản thời gian chạy Mono
- 9. Thời gian chạy hiện đại là gì?
- 10. thời gian chạy xác định loại cho C++
- 11. Lỗi thời gian chạy JavaScript: '$' không được xác định
- 12. phương thức gọi tại thời gian chạy
- 13. Xác định Bảng điều khiển WPF tại thời gian chạy
- 14. Khởi tạo một đối tượng với kiểu xác định thời gian chạy
- 15. Xác định phương pháp chung
- 16. Làm thế nào để tiêm IL vào một phương pháp tại thời gian chạy
- 17. đèo luận variadic từ một phương pháp khác với ARC
- 18. Gọi một phương thức có tên là "chuỗi" tại thời gian chạy trong Java và C
- 19. phương pháp xác định 'use_transactional_fixtures
- 20. Tạo phương pháp thử nghiệm đơn vị động trong thời gian chạy trong MSTest
- 21. Generic Phương pháp thực hiện với một kiểu thời gian chạy
- 22. phương pháp xác định 'find_or_create'
- 23. C#: Nhận tham số kiểu trong thời gian chạy để vượt qua thành một phương pháp Generic
- 24. Làm thế nào để xác định xem một phương pháp là một trường hợp chung của một phương pháp chung
- 25. Thời gian sự kiện Jquery FullCalendarlàmột phương pháp di chuột
- 26. Không gian tên hoặc mô-đun "Thời gian chạy" không được xác định
- 27. Lựa chọn phương pháp động dựa trên kiểu tham số thời gian chạy
- 28. phương pháp xác định 'link_to'
- 29. Tạo một lớp trong thời gian chạy
- 30. Làm thế nào để xác định một chức năng variadic
Bạn có thể giải thích thêm một chút về bối cảnh bạn muốn có thông tin này không? Tôi không chắc chắn về cách chính xác để tìm thấy rằng tại thời gian chạy nhưng tôi cũng không bao giờ cần thiết để xây dựng rất nhiều phương pháp variadic. Về cơ bản những gì tôi nhận được là có lẽ bạn không cần phải biết và có một vấn đề lớn hơn. Có lẽ nhưng tôi luôn luôn có thể sai quá :) –
Điều gì sẽ xảy ra khi bạn gọi 'method_getNumberOfArguments()' trên một phương thức veridic? Tôi chưa bao giờ thử nó, nhưng có lẽ nó trả về một giá trị đặc biệt (như -1 hay cái gì đó)? Xem thêm 'method_copyArgumentType()'. – user1118321
@ user1118321 'method_getNumberOfArguments' trả về số lượng tối thiểu, giống như phương pháp bình thường. –