2009-02-26 42 views
44

Tôi đang cố gắng xây dựng một ứng dụng iPhone. Tôi tạo ra một phương pháp
như thế này:Làm thế nào tôi có thể gọi một phương thức trong Mục tiêu-C?

- (void)score { 
    // some code 
} 

và tôi đã cố gắng gọi nó trong một phương pháp khác như thế này:

- (void)score2 { 
    @selector(score); 
} 

Nhưng nó không hoạt động. Vì vậy, làm thế nào để tôi gọi một phương pháp chính xác?

Trả lời

23

Tôi nghĩ rằng những gì bạn đang cố gắng làm là:

-(void) score2 { 
    [self score]; 
} 

Cú pháp [object message] là cách thông thường để gọi một phương thức trong Objective-C. Tôi nghĩ rằng cú pháp @selector được sử dụng khi phương pháp được gọi cần phải được xác định trong thời gian chạy, nhưng tôi không biết đủ tốt để cung cấp cho bạn thêm thông tin về điều đó.

+0

@selector này mang đến cho bạn những "tên" của một phương pháp trong một hình thức mà Objectiv e-C có thể sử dụng để gửi tin nhắn. Nó được sử dụng tương tự như một con trỏ hàm. – Chuck

27

Tôi đề nghị bạn đọc The Objective-C Programming Language. Phần về nhắn tin đặc biệt là những gì bạn muốn ở đây, nhưng toàn bộ điều sẽ giúp bạn bắt đầu. Sau đó, có thể thử làm một vài hướng dẫn để có được một cảm giác cho nó trước khi bạn nhảy vào làm cho các ứng dụng của riêng bạn.

+6

@fijiaaron: Tôi không nói "RTFM". Tôi nói rằng câu hỏi này ở cấp tiểu học như vậy nếu anh ta phải hỏi nó, anh ta sẽ tìm thấy kinh nghiệm của mình trong Objective-C rất bực mình và đọc hướng dẫn giới thiệu đó là một khởi đầu tốt trên con đường bên phải. Dạy một người đàn ông để cá, bạn biết. Cá nhân, tôi thấy loại câu trả lời này hữu ích hơn nhiều so với một chất nôn mửa không biết rõ về chất lượng. – Chuck

81

Để gửi một tin nhắn Objective-C trong trường hợp này bạn sẽ làm gì

[self score]; 

tôi đề nghị bạn đọc hướng dẫn lập trình Objective-C Objective-C Programming Guide

5

Sử dụng này:

[self performSelector:@selector(score) withObject:nil afterDelay:0.2]; 
+2

Tôi đã tự hỏi một thời gian nếu thêm chậm trễ cho một phương pháp là có thể. Không bao giờ có yêu cầu để làm điều đó, nhưng luôn luôn tự hỏi nếu có thể được thực hiện và làm thế nào nó sẽ được thực hiện. :) tốt đẹp nhất. Đến một điều và cuối cùng tìm thấy một cái gì đó hữu ích. – Jiraheta

16

gọi phương thức là như thế này

[className methodName] 

tuy nhiên nếu bạn muốn gọi phương thức trong lớp cùng bạn có thể sử dụng tự

[self methodName] 

tất cả những điều trên là bởi vì phương pháp của bạn không được dùng bất cứ thông số

tuy nhiên

nếu phương pháp của bạn mất các thông số bạn sẽ cần phải làm điều đó như

[self methodName:Parameter] 
+0

Điều này có vẻ rõ ràng và bao gồm một tham số, đó là hữu ích, ngay cả khi không cho ví dụ "điểm số" đơn giản. – Matt

1
[self score]; instead of @selector(score) 
Các vấn đề liên quan