2010-05-26 33 views
5

Tôi đang làm việc thông qua một cuốn sách phát triển iPhone * mà không thực sự biết Mục tiêu C. Phần lớn tôi có thể làm theo những gì đang xảy ra, nhưng có một vài cách khai báo như cái dưới đây mà tôi đang gặp phải một chút rắc rối khi phân tích cú pháp. Ví dụ:Ai đó có thể giải thích cú pháp khai báo phương pháp C Mục tiêu

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section { 
    return [self.controllers count]; //controllers is an instance variable of type NSArray in this class 
} 

Có vẻ đây là một phương pháp gọi là numberOfRowsInSection, và nó trả về một NSInteger, và mất một NSInteger như một tham số được địa phương gọi là 'phần'. Nhưng tôi không hiểu tất cả các tham chiếu đến tableView, hoặc tại sao điều này có một tham số khi nó không được sử dụng trong phương thức. Ai đó có thể làm rõ điều này? Cảm ơn.

* p. 258, Bắt đầu phát triển 3 iPhone, Mark và LaMarche, xuất bản bởi Apress

Cập nhật: tôi đã có thể tìm thấy một thread SO mà đi vào một chút chi tiết hơn: Method Syntax in Objective C

+0

Bạn nên học Objective-C trước, bạn sẽ không hối tiếc. Đọc cuốn sách này và thực hiện tất cả các bài tập: http://www.amazon.com/dp/0321566157 –

Trả lời

4

Đây là một phương pháp được gọi là:

tableView:numberOfRowsInSection: 

Phải mất hai tham số:

  • một UITableView*
  • một NSInteger

Phương pháp này cũng có một tham số ngầm self, đó là trường hợp nó được gọi là với. Theo ghi chú dreamlax, nó cũng cần một hàm ẩn là _cmd, là phương thức hiện đang được gọi.

Như Mark cho biết, hoàn toàn phổ biến là không sử dụng các thông số nhất định nếu bạn tuân thủ một giao diện nhất định.

+0

Và thông số ngầm định '_cmd' hiếm khi được sử dụng. – dreamlax

+0

Tham số _cmd là gì? – Shiki

+1

@Shiki: Tôi nghĩ, đối số '_cmd' cho biết bộ chọn được sử dụng để giải quyết việc triển khai phương thức. Trong những tình huống hiếm hoi khi việc thực hiện cùng một phương thức được chia sẻ giữa nhiều bộ chọn, đối số '_cmd' có thể được sử dụng để phân biệt cách thực hiện phương thức được gọi. Ngoài việc mangling thời gian chạy, tôi chưa bao giờ thực sự sử dụng '_cmd'. – dreamlax

1

Phương pháp này được phù hợp với các UITableViewDataSource giao thức. Nếu bạn đã quen thuộc với C# hoặc Java, một giao thức giống như một số interface.

Hoàn toàn hợp pháp và không quá bất thường đối với một phương thức phù hợp với giao diện hoặc giao thức để bỏ qua một số đối số.

2

Đây là phương thức được gọi là tableView:rowsInSection: mà UITableView chỉ định cho các đại biểu của nó. Các đối số tableView là có trong trường hợp bạn có một bộ điều khiển phụ trách một số UITableViews, để nó có thể cho biết cái nào là nói chuyện với nó. Nó cũng hữu ích nếu bạn cần truy vấn UITableView để biết thông tin nhằm quyết định bạn muốn làm gì. Điều này rất phổ biến trong các phương thức ủy nhiệm.

Các vấn đề liên quan