好吧,我想了解這個post關於從一個視圖控制器到其他數據傳輸的最佳方式。iphone委託協議無法保存對象
事情是,如果我想設置對象的attr它的作品像冠軍。如果我嘗試設置整個對象,它不會這樣做。
我的代碼是:
@protocol AppDelegateProtocol
- (Lote*) theLoteAppObject;
@end
上的AppDelegate:
@interface AgroferiaAppDelegate : NSObject <UIApplicationDelegate, AppDelegateProtocol> {
Lote *theLoteAppObject;
}
@property (nonatomic, retain) Lote *theLoteAppObject;
@end
...
...
- (id) init;
{
self.theLoteAppObject = [[Lote alloc] init];
[theLoteAppObject release];
return [super init];
}
類在那裏我得到這個問題(的UIViewController):
-(void)tableView:(UITableView *) aTableView didSelectRowAtIndexPath:(NSIndexPath *) indexPax{
...
NSArray *lotes = [[self.evento lotesStore]allLotes] ;
Lote* theDataObject = [self theLoteAppObject];
theDataObject._id = [[lotes objectAtIndex:[indexPax row]]_id];
[[self navigationController]pushViewController:lotesOpViewController animated:YES];
}
- (Lote*) theLoteAppObject;{
id<AppDelegateProtocol> theDelegate = (id<AppDelegateProtocol>) [UIApplication sharedApplication].delegate;
Lote* theDataObject;
theDataObject = (Lote*) theDelegate.theLoteAppObject;
return theDataObject;
}
,這樣的作品,但如果我想做下面的事情,
theDataObject = [lotes objectAtIndex:[indexPax row]];
它不保存數據對象上的對象。
這是一個糟糕的內存管理問題嗎?
編輯:是它的數據對象從AppDelegate的參考?或者這是問題?
我猜你陣列中的所有Lote物品都是自動釋放的。檢查你的'[lotes objectAtIndex:[indexPax row]];'返回的對象是否是一個有效的Lote對象,如果是,則對其進行「複製」。 –
atm做objectAtIndex我可以看到對象在那裏,並與他的所有信息。所以你建議我必須複製他。新問題,在這種情況下做到這一點的最佳方式? –
想添加,是否可以,如果我創建一個方法initWithLote:(Lote *)copyLote在Lote類中,我做了深層複製,如果他的所有attr? –