Tôi có lớp A là lớp siêu hạng cho cả lớp B và lớp C. Tôi cần lưu trữ các đối tượng của lớp A trong NSMutablearray 'tĩnh' được định nghĩa trong lớp A. Có thể sửa đổi dữ liệu được lưu trữ trong MSMutableArray bằng các phương thức trong lớp hay không B và lớp C? Làm thế nào để tạo và khởi tạo mảng tĩnh? Một ví dụ sẽ giúp ích nhiều hơn. cảm ơn trước.Làm thế nào để tạo một NSMutableArray tĩnh trong một lớp trong mục tiêu c?
7
A
Trả lời
14
Đây là một cách để thực hiện.
@interface ClassA : NSObject
{
}
-(NSMutableArray*) myStaticArray;
@end
@implementation ClassA
-(NSMutableArray*) myStaticArray
{
static NSMutableArray* theArray = nil;
if (theArray == nil)
{
theArray = [[NSMutableArray alloc] init];
}
return theArray;
}
@end
Đó là mẫu mà tôi sử dụng khá nhiều thay vì những người độc thân thực sự. Các đối tượng của ClassA và các lớp con của nó có thể sử dụng nó như sau:
[[self myStaticArray] addObject: foo];
Có các biến thể bạn có thể xem xét ví dụ: bạn có thể làm cho phương thức một phương thức lớp. Bạn cũng có thể muốn tạo chủ đề phương thức an toàn trong môi trường đa luồng. ví dụ.
-(NSMutableArray*) myStaticArray
{
static NSMutableArray* theArray = nil;
@synchronized([ClassA class])
{
if (theArray == nil)
{
theArray = [[NSMutableArray alloc] init];
}
}
return theArray;
}
Các vấn đề liên quan
- 1. Làm thế nào để khởi tạo một NSMutableArray trong mục tiêu C?
- 2. NSMutableArray để NSArray trong C Mục tiêu
- 3. Mục tiêu c, NSMutableArray: indexOfObject
- 4. Làm thế nào để tạo một bean Spring từ một hàm tạo lớp bên trong tĩnh?
- 5. Làm thế nào để tạo một lớp con trong C#?
- 6. Làm thế nào để tạo một biến cá thể BOOL trong mục tiêu c?
- 7. Làm thế nào để thiết lập một tài sản kiểu boolean trong lớp C Mục tiêu
- 8. mảng tĩnh trong mục tiêu C
- 9. Làm cách nào để tạo một mảng CGFloats trong mục tiêu c?
- 10. Khởi tạo biến tĩnh trong loại Mục tiêu-C
- 11. Làm thế nào để tạo một trang tĩnh trong CakePHP?
- 12. Làm thế nào để xây dựng một NSArray (hoặc NSMutableArray) của các phương thức lớp trong Objective-C?
- 13. Làm cách nào để tạo một biến tĩnh trong lớp Python thông qua API C?
- 14. Tạo một NSMutableArray từ một NSArray Objective-C
- 15. Tạo các lớp động tùy chỉnh trong mục tiêu-c
- 16. Làm cách nào để tạo một lớp Python trong C?
- 17. C++ Interop: Làm thế nào để gọi một lớp C# từ bản C++, với việc xoay lớp không tĩnh?
- 18. làm thế nào để in characterSet trong mục tiêu c?
- 19. Làm thế nào để bỏ 'Lớp A' vào phân lớp 'Lớp B' - Mục tiêu-C
- 20. Làm thế nào để sao chép một UIButton trong mục tiêu C?
- 21. Tạo một siêu lớp có một biến tĩnh khác nhau cho mỗi phân lớp trong C#
- 22. Làm cách nào để khởi tạo một std :: vector trong một hàm tạo lớp trong C++?
- 23. Làm thế nào để kiểm tra nếu một nguyên thủy trong Mục tiêu-C là nil?
- 24. Làm cách nào để gọi một hàm mục tiêu C?
- 25. Làm thế nào để tạo một mảng byte trong C++?
- 26. Làm cách nào để di chuyển một mục trên NSMutableArray?
- 27. Có cách nào để hợp nhất hai NSMutableArray trong mục tiêu c?
- 28. Mục tiêu-c: Làm thế nào tôi có thể lấy dụ lớp trong phương thức lớp
- 29. Làm thế nào để tạo một NSRange tĩnh?
- 30. Mục tiêu-C: Làm thế nào để thay đổi lớp của một đối tượng trong thời gian chạy?
điều này sẽ không gây ra rò rỉ bộ nhớ cho theArray? – tbag
Nó sẽ không bị rò rỉ chút nào - theArray được định nghĩa là mảng tĩnh, do đó nó sẽ khởi tạo đối tượng này chỉ một lần. – deathhorse
@JeremyP vừa tìm thấy điều này ngay bây giờ. Chỉ muốn nói lời chúc mừng vì điều này. Giải pháp tuyệt vời! –