tôi đã được đọc lên về bỏ qua tin nhắn Objective-C để đạt được hiệu suất (không liên quan đến câu hỏi cụ thể này) khi tôi tìm thấy một chút thú vị mã:Phạm vi của hàm c được xác định trong lớp mục tiêu-c là gì?
#import <Cocoa/Cocoa.h>
@interface Fib : NSObject { }
- (long long) cFib: (NSUInteger) number;
@end
@implementation Fib
// c implementation of fib
long long cFibIMP(NSUInteger number)
{
return (number < 3) ? 1 : cFib(number - 1) + cFib(number - 2);
}
// method wrapper for c implementation of fib
- (long long) cFib: (NSUInteger) number
{
return cFibIMP(number);
}
@end
Câu hỏi của tôi là; khi sử dụng hàm c, trong một đối tượng object-c, phạm vi nào là hàm c (cFibIMP trong trường hợp cụ thể này) được đặt trong? Liệu lớp target-c có đóng gói hàm c loại bỏ sự thay đổi của xung đột tên hay hàm c chỉ đơn giản là được đưa vào phạm vi toàn cục của toàn bộ chương trình mục tiêu-c?
vì vậy việc thêm tiền tĩnh vào khai báo hàm sẽ hạn chế phạm vi của nó đối với mô đun đó? Điều này có áp dụng ngay cả khi khai báo tĩnh được thực hiện nội bộ cho @implementation như trái ngược với việc được thực hiện bên ngoài (tức là ở đầu tệp mã nguồn không?) –