Chức năng Objective-C
Hàm là một nhóm các câu lệnh cùng thực hiện một tác vụ. Mỗi chương trình Objective-C đều có một hàm C, đó làmain(), và tất cả các chương trình tầm thường nhất có thể xác định các chức năng bổ sung.
Bạn có thể chia mã của mình thành các chức năng riêng biệt. Cách bạn phân chia mã của mình giữa các chức năng khác nhau là tùy thuộc vào bạn, nhưng về mặt logic, việc phân chia thường là do mỗi chức năng thực hiện một nhiệm vụ cụ thể.
Một chức năng declarationcho trình biên dịch biết về tên, kiểu trả về và các tham số của hàm. Một chức năngdefinition cung cấp phần thân thực tế của hàm.
Về cơ bản trong Objective-C, chúng tôi gọi hàm là phương thức.
Khung nền tảng Objective-C cung cấp nhiều phương thức tích hợp sẵn mà chương trình của bạn có thể gọi. Ví dụ, phương phápappendString() để nối chuỗi vào một chuỗi khác.
Một phương thức được biết đến với nhiều tên khác nhau như một hàm hoặc một quy trình con hoặc một thủ tục, v.v.
Xác định một phương pháp
Dạng tổng quát của định nghĩa phương thức trong ngôn ngữ lập trình Objective-C như sau:
- (return_type) method_name:( argumentType1 )argumentName1
joiningArgument2:( argumentType2 )argumentName2 ...
joiningArgumentn:( argumentTypen )argumentNamen {
body of the function
}
Định nghĩa phương thức trong ngôn ngữ lập trình Objective-C bao gồm tiêu đề phương thức và thân phương thức . Đây là tất cả các phần của một phương pháp -
Return Type- Một phương thức có thể trả về một giá trị. Cácreturn_typelà kiểu dữ liệu của giá trị mà hàm trả về. Một số phương thức thực hiện các hoạt động mong muốn mà không trả về giá trị. Trong trường hợp này, return_type là từ khóavoid.
Method Name- Đây là tên thực của phương thức. Tên phương thức và danh sách tham số cùng nhau tạo thành chữ ký phương thức.
Arguments- Một đối số giống như một trình giữ chỗ. Khi một hàm được gọi, bạn truyền một giá trị cho đối số. Giá trị này được gọi là tham số hoặc đối số thực tế. Danh sách tham số đề cập đến kiểu, thứ tự và số lượng các đối số của một phương thức. Đối số là tùy chọn; nghĩa là, một phương thức có thể không chứa đối số.
Joining Argument - Một đối số nối là để làm cho nó dễ đọc hơn và làm cho nó rõ ràng trong khi gọi nó.
Method Body - Phần thân của phương thức chứa một tập hợp các câu lệnh xác định chức năng của phương thức.
Thí dụ
Sau đây là mã nguồn cho một phương thức được gọi là max(). Phương thức này nhận hai tham số num1 và num2 và trả về giá trị tối đa giữa hai tham số:
/* function returning the max between two numbers */
- (int) max:(int) num1 secondNumber:(int) num2 {
/* local variable declaration */
int result;
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
Khai báo phương pháp
Một phương pháp declarationcho trình biên dịch biết về tên hàm và cách gọi phương thức. Phần thân thực của hàm có thể được định nghĩa riêng biệt.
Một khai báo phương thức có các phần sau:
- (return_type) function_name:( argumentType1 )argumentName1
joiningArgument2:( argumentType2 )argumentName2 ...
joiningArgumentn:( argumentTypen )argumentNamen;
Đối với hàm max () được định nghĩa ở trên, sau đây là khai báo phương thức:
-(int) max:(int)num1 andNum2:(int)num2;
Khai báo phương thức là bắt buộc khi bạn xác định một phương thức trong một tệp nguồn và bạn gọi phương thức đó trong một tệp khác. Trong trường hợp này, bạn nên khai báo hàm ở đầu tệp gọi hàm.
Gọi một phương thức
Trong khi tạo phương thức Objective-C, bạn đưa ra định nghĩa về những gì hàm phải làm. Để sử dụng một phương thức, bạn sẽ phải gọi hàm đó để thực hiện tác vụ đã xác định.
Khi một chương trình gọi một hàm, điều khiển chương trình được chuyển sang phương thức được gọi. Một phương thức được gọi thực hiện tác vụ đã xác định và khi câu lệnh trả về của nó được thực thi hoặc khi đạt đến dấu ngoặc nhọn kết thúc hàm, nó sẽ trả lại điều khiển chương trình trở lại chương trình chính.
Để gọi một phương thức, bạn chỉ cần chuyển các tham số bắt buộc cùng với tên phương thức và nếu phương thức trả về một giá trị, thì bạn có thể lưu trữ giá trị trả về. Ví dụ -
#import <Foundation/Foundation.h>
@interface SampleClass:NSObject
/* method declaration */
- (int)max:(int)num1 andNum2:(int)num2;
@end
@implementation SampleClass
/* method returning the max between two numbers */
- (int)max:(int)num1 andNum2:(int)num2 {
/* local variable declaration */
int result;
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
@end
int main () {
/* local variable definition */
int a = 100;
int b = 200;
int ret;
SampleClass *sampleClass = [[SampleClass alloc]init];
/* calling a method to get max value */
ret = [sampleClass max:a andNum2:b];
NSLog(@"Max value is : %d\n", ret );
return 0;
}
Tôi đã giữ hàm max () cùng với hàm main () và tuân thủ mã nguồn. Trong khi chạy tệp thực thi cuối cùng, nó sẽ tạo ra kết quả sau:
2013-09-07 22:28:45.912 demo[26080] Max value is : 200
Đối số hàm
Nếu một hàm sử dụng các đối số, nó phải khai báo các biến chấp nhận giá trị của các đối số. Các biến này được gọi làformal parameters của hàm.
Các tham số chính thức hoạt động giống như các biến cục bộ khác bên trong hàm và được tạo khi nhập vào hàm và bị hủy khi thoát.
Trong khi gọi một hàm, có hai cách mà các đối số có thể được truyền cho một hàm:
Sr.No. | Loại & Mô tả Cuộc gọi |
---|---|
1 | Gọi theo giá trị
Phương thức này sao chép giá trị thực của một đối số vào tham số chính thức của hàm. Trong trường hợp này, các thay đổi được thực hiện đối với tham số bên trong hàm không ảnh hưởng đến đối số. |
2 | Gọi bằng cách tham khảo
Phương thức này sao chép địa chỉ của một đối số vào tham số chính thức. Bên trong hàm, địa chỉ được sử dụng để truy cập đối số thực được sử dụng trong lệnh gọi. Điều này có nghĩa là các thay đổi được thực hiện đối với tham số sẽ ảnh hưởng đến đối số. |
Theo mặc định, Objective-C sử dụng call by valueđể chuyển đối số. Nói chung, điều này có nghĩa là mã bên trong một hàm không thể thay đổi các đối số được sử dụng để gọi hàm và ví dụ nêu trên khi gọi hàm max () được sử dụng cùng một phương thức.