2011-01-18 51 views

Trả lời

15

Mục tiêu-C không có biến lớp và những gì bạn gọi là biến thành viên được gọi là biến mẫu. Các biến cá thể có thể được tham chiếu theo tên từ bên trong một phương thức thể hiện. Và nếu bạn cần hành vi của biến lớp, bạn có thể sử dụng tệp tĩnh cấp tệp thay thế.

Dưới đây là một ví dụ rất nhanh:

foo.h

@interface Foo : NSObject { 
    NSString *foo; 
} 
@end 

Foo.m

static NSString *bar; 

@implementation Foo 
- (void)foobar { 
    foo = @"test"; // assigns the ivar 
    bar = @"test2"; // assigns the static 
} 
@end 
+0

Và bạn sẽ sử dụng nó như: Foo * myFoo = [[ Foo alloc] init]; [myFoo foobar]; [phát hành myFoo]; – nacho4d

+0

Cảm ơn bạn đã nhanh chóng respone, ý tưởng của tôi là có một lớp NSMutableDictionary rằng tất cả các trường hợp của một đối tượng chia sẻ, đó sẽ là một cách chính xác của thiết kế hoặc im tôi thiếu một cái gì đó? –

+1

Nếu bạn cần một từ điển được chia sẻ, nó hoạt động tốt. Bạn muốn có một mức tĩnh trong tệp .m cho NSMutableDictionary và bạn có thể muốn tạo nó trong phương thức '+ initialize' (để đảm bảo nó tồn tại trước khi bất kỳ cá thể nào truy cập nó). Nếu bạn cần chạm vào đối tượng này khỏi chủ đề chính, bạn nên sử dụng hàng đợi công văn GCD để tuần tự truy cập vào nó - nếu không, chỉ cần tiếp tục và sử dụng nó như bình thường. Lưu ý rằng bạn cần phải dính một cá thể được sở hữu trong biến, ví dụ: '[[NSMutableDictionary alloc] init]'. Và không bao giờ phát hành nó (vì bản thân lớp không bao giờ biến mất). –

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