これを理解しようとしていたのですが、postは、あるビューコントローラから他のビューコントローラにデータを転送する最良の方法です。iphoneデリゲートプロトコルでオブジェクトを保存できません
物事は、オブジェクトのattrを設定したい場合は、その作品はチャンピオンのようです。私はオブジェクト全体を設定しようとすると、それはそれをしません。
私のコードは次のとおりです。
@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)を取得クラス:AppDelegateに
@protocol AppDelegateProtocol
- (Lote*) theLoteAppObject;
@end
作品
-(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]];
オブジェクトをDataObjectに保存しません。
これは悪いメモリ管理の問題ですか?
編集:それはtheDataObjectですか?appDelegateからの参照ですか?またはここに問題がありますか?これはあなたのLote
オブジェクトの独立した、保有のコピーを作成します
if([indexPax row] < [lotes count])
{
Lotes * dataObjectToCopy = [lotes objectAtIndex: [indexPax row]];
if(dataObjectToCopy)
{
theDataObject = [dataObjectToCopy copy];
}
}
:
あなたの配列のすべてのLoteアイテムがオートリリースされていると思います。あなたの '[lotes objectAtIndex:[indexPax row]];によって返されたオブジェクトが有効なLoteオブジェクトであるかどうかを確認し、有効なLoteオブジェクトであればそのオブジェクトの' copy'を行います。 –
atm of objectAtIndex私はオブジェクトがすべての彼の情報と共にそこにあることを知ることができます。だから私は彼のコピーを作る必要があることをお勧めします。 newby質問、この状況でそれを行うための最善の方法? –
私はメソッドのinitWithLoteを作成すると大丈夫ですか?(Lote *)LoteクラスのcopyLoteどこの深いコピーを作成するのですか? –