Objective c NSMutableArray addObject未添加对象,对象已分配
我试图在Objective c NSMutableArray addObject未添加对象,对象已分配,objective-c,cocoa-touch,ios,nsmutablearray,Objective C,Cocoa Touch,Ios,Nsmutablearray,我试图在NSMutableArray上使用我创建的名为Position的类addObject:。根据日志,我添加到数组中的Position实例不是nil——我可以将其属性输出到日志中。但是,数组似乎从未实际占据位置 @implementation Position @synthesize tradeDirection, instrument, quantity, fill, profit, positive, index; -(id)initWithArray:(NSArray*)data
NSMutableArray
上使用我创建的名为Position
的类addObject:
。根据日志,我添加到数组中的Position
实例不是nil
——我可以将其属性输出到日志中。但是,数组似乎从未实际占据位置
@implementation Position
@synthesize tradeDirection, instrument, quantity, fill, profit, positive, index;
-(id)initWithArray:(NSArray*)data
{
self = [super init];
if (self)
{
self.tradeDirection = [data objectAtIndex:0];
self.instrument = [data objectAtIndex:1];
self.quantity = [data objectAtIndex:2];
self.fill = (NSNumber*)[data objectAtIndex:3];
self.profit = [data objectAtIndex:4];
self.positive = [@"True" isEqualToString:[data objectAtIndex:5]];
self.index = (NSNumber*)[data objectAtIndex:6];
}
return self;
}
+(Position*)createPositionWithString:(NSString*)data
{
return [[[self alloc] initWithArray:[data componentsSeparatedByString:@"#"]] autorelease];
}
@end
加载位置:数据方法
-(void)加载位置:(NSString*)数据
{
TT_安全释放_(_位置);
NSArray*dataArray=[data componentsSeparatedByString:@];“];
对于(inti=2;iTT_RELEASE_安全地向其参数发送一条RELEASE消息,然后再将其分配给nil(IIRC)。为什么_位置为nil会让人感到意外
无论出于何种原因,您可能需要释放_positions,但必须先分配和初始化新对象,并将其引用分配给_positions,然后才能向其添加项目
编辑:正如Luke在评论中指出的,TT_RELEASE_安全地来自three20库
#define TT_RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; }
TT_RELEASE_宏在将参数赋值为nil(IIRC)之前安全地向其参数发送一条RELEASE消息。为什么_位置为nil会让人感到意外
无论出于何种原因,您可能需要释放_positions,但必须先分配和初始化新对象,并将其引用分配给_positions,然后才能向其添加项目
编辑:正如Luke在评论中指出的,TT_RELEASE_安全地来自three20库
#define TT_RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; }
你在哪里创建_positions数组?几乎可以肯定你没有正确地实例化/保留_positions数组。需要查看更多关于此位的代码,因为你发布的其他内容看起来都很好。你在哪里创建_positions数组?几乎可以肯定你没有正确地实例化/保留_positions数组。需要查看更多c围绕这一点的ode和您发布的其他内容看起来都不错。这一点。如果使用非标准库代码(例如TT_RELEASE_安全,这是来自Three20库吗?)这有助于解释它的作用。不是每个人都使用这些库。啊,是的,将对象设置为nil导致对象为nil的及时编程范例经典。我的评论实际上是针对OP的,但感谢您的澄清。这一点。如果使用非标准库代码,我是否可以补充一下(例如TT_RELEASE_safety,这是Three20库中的吗?)这有助于解释它的功能。不是每个人都使用这些库。啊,是的,将对象设置为nil导致对象为nil的及时编程范例经典。我的评论实际上是针对OP的,但感谢澄清。