[英]How to retain this object when inserting to mutable array?
更新:我已經在A的copyWithZone方法中找到了該錯誤。謝謝大家。
更新:抱歉,我確實聲明了@properties,我認為這很明顯,因此我在OP中跳過了它們。 對於那個很抱歉。
崩潰消息是:嘗試訪問str時objA已釋放(僵屍)內存。
我的數據結構如下所示:
@class A
{
NSString *str;
}
@property (retain) NSString *str; // str synthesized in .m
@class B
{
A *objA;
}
@property (copy) A *objA; // objA synthesized in .m
我正在嘗試做的是:
B *newB = [[B alloc] init];
[someMutableArray addObject: newB];
但是,當我嘗試像這樣訪問時,我有時會崩潰:
B *myB = [someMutableArray objectAtIndex: index];
someLabel.text = myB.objA.str;
我猜想在將B插入數組時objA和objA.str沒有保留。 但是我不知道如何確保他們得到再培訓。
任何幫助表示贊賞
-獅子座
您應該為A類和B類使用屬性:
@interface A : NSObject {
NSString *str;
}
@property (nonatomic, retain) NSString *str;
@end
使用@synthesize str; 在.m文件中,這將保留str,不要忘了在dealloc方法中釋放str:
@implementation A
@synthesize str;
- (void) dealloc {
[str release], str= nil;
[super dealloc];
}
@end;
你有沒有嘗試過:
[someMutableArray addObject: [newB copy] ];
在這條線
someLabel.text = myB.A.str;
它應該是...
someLabel.text = myB.objA.str;
是的,您還應該為類的成員使用屬性。 那將保留他們。 只是不要忘記在dealloc中釋放
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.