Tôi sắp xếp ra một số vấn đề về bộ nhớ với ứng dụng iPhone của mình và tôi vừa mới suy nghĩ về một số vấn đề cơ bản. Nếu tôi thiết lập một ivar và không bao giờ kết thúc bằng cách sử dụng nó trong tuổi thọ của đối tượng của tôi, khi tôi gọi dealloc trên nó, điều đó sẽ gây ra một vấn đề? Ví dụ.Các biến mẫu có được đặt thành nil theo mặc định trong Objective-C không?
@interface testClass {
id myobject;
}
@property (nonatomic, retain) id myobject;
@end
@implementation testClass
@synthesize myobject;
- (id)init {
...
// Do I have to set myobject to nil here?
// So if myobject isn't used the dealloc call to nil
// will be okay? Or can you release the variable without
// having set every object to nil that you may may not use
...
}
...
// Somewhere in the code, myobject may be set to
// an instance of an object via self.myobject = [AnObject grabAnObject]
// but the object may be left alone
...
- (void)dealloc {
[myobject release];
[super dealloc];
}
@end
Mike Abdullah: Tôi đã thực sự thay đổi trong chỉnh sửa của tôi. –
Ah phải, do đó, biến bình thường được tạo ra trong một hàm không được đặt thành 0/nil khi bạn khai báo chúng? Chỉ các biến mẫu. Vì vậy, nó là chính xác mà các biến bình thường sẽ chỉ chứa 'rác' cho đến khi bạn rõ ràng đặt nó vào một cái gì đó? –
Điều đó đúng. –