Không có cú pháp đặc biệt cho điều này. Bạn chỉ cần định nghĩa một phương thức lớp để trả về mảng tĩnh.
Ví dụ:
@implementation A // note this is in the implementation
static NSArray *array;
+ (NSArray *)array
{
if (!array)
array = [[NSArray alloc] init];
return array;
}
@end
Hoặc cho mã Messier, nhưng hiệu suất tốt hơn một chút (một ý tưởng tốt trong một vòng lặp chặt chẽ, nhưng thường không có giá trị):
@implementation A
static NSArray *array;
+ (void)initialize // this method is called *once* for every class, before it is used for the first time (not necessarily when the app is first launched)
{
[super initialize];
array = [[NSArray alloc] init];
}
+ (NSArray *)array
{
return array;
}
@end
Để truy cập nó từ lớp B
bạn chỉ cần thực hiện: [A array]
Nguồn
2011-12-08 06:57:02
Nếu bạn cần khởi tạo an toàn luồng và vẫn muốn làm điều đó một cách lười biếng, dispatch_once() là một cách hay để thực hiện. –
Hmm Tôi chưa bao giờ nghĩ về điều đó. Ý tưởng tốt. –
xem mã của tôi cho dispatch_once() – vikingosegundo