Video: Dùng Siri chuyên nghiệp kể cả không biết tiếng Anh 2025
Thật thú vị, Objective-C cho phép bạn thêm các phương pháp của riêng bạn vào các lớp hiện có trong một ứng dụng iOS, mà bạn chưa viết. Thêm các phương pháp bổ sung vào một lớp học rất hữu ích trong trường hợp hành vi mới chỉ được sử dụng trong những tình huống nhất định.
Ví dụ, bạn có thể thấy rằng một ứng dụng cụ thể (nói, một bộ kiểm tra palindrome) cần phải đảo ngược lại bất kỳ chuỗi nào mà nó đang xử lý!
Nó có thể làm cho chương trình của bạn quá phức tạp để tạo lớp con của riêng bạn của NSString với phương pháp đảo ngược bổ sung. Thay vào đó, bạn có thể thấy thuận tiện hơn để thêm hành vi mới vào lớp gốc. Nó sẽ không được tốt đẹp nếu bạn có thể thêm một phương pháp đảo ngược để NSString chính nó!
Lưu ý bạn không thể sửa đổi giao diện ban đầu hoặc thực hiện NSString bởi vì nó là một lớp khung và bạn không có mã nguồn. Tuy nhiên, bạn có thể mở rộng lớp NSString (hoặc bất kỳ lớp nào khác) bằng cách xác định một loại mới. Trong tệp PostfixAll. m bạn sẽ thấy rằng lớp NSString đã được mở rộng với một phương pháp có tên đảo ngược như sau:
@interface NSString (ReversibleString) - (NSString *) đảo ngược; -d
Như bạn thấy, xác định một thể loại rất giống với việc định nghĩa một giao diện cho một lớp. Trong thực tế, việc cung cấp một sự thực hiện cho các phương thức của một loại cũng rất giống với việc cung cấp việc thực hiện cho một lớp trong các phương pháp được bao gồm trong một khối @implementation.
Bạn có thể thấy khối thực hiện cho thể loại (bao gồm mã cho phương thức đảo ngược) bên dưới (trong tệp PostfixAll.m):
@ thực hiện NSString (ReversibleString) - (NSString *) đảo ngược {NSMutableString * reversedString = [[NSMutableString alloc] init]; int stringLength = tự. chiều dài; cho (int i = stringLength-1; i> = 0, i--) (NSString * oneCharString = [tự substringWithRange: NSMakeRange (i, 1)]; Cuối cùng,
sử dụng của một phương pháp được xác định trong một loại không khác với việc sử dụng bất kỳ phương pháp khác, như có thể nhìn thấy từ đoạn mã sau lấy từ chức năng chính của PostfixAll. m: NSLog (@ "In ngược chuỗi>% @ <", [aStringObject đảo ngược]);
