Desidero mantenere un blocco all'interno dei dati principali NSManagedObject se è possibile. Ho una classe ereditata da NSManagedObject. Questa classe ha un blocco per soddisfare alcune chiamate asincrone. Ho provato a memorizzare il blocco come attributo trasformabile e transitorio. quando provo a richiamare il blocco prima di caricare il mio NSManagedObject, ho un accesso errato alla memoria "EXC_BAD_ACCESS"
.È possibile memorizzare un blocco all'interno di NSManagedObject?
Se non controllare il flag trasformabile ho un'eccezione simile a questo:
-[__NSStackBlock__ encodeWithCoder:]: unrecognized selector sent to instance 0xbfffd930
Sono nuovo in iOS. Sto lavorando con iOS 5 SDK con ARC abilitato. Questo è un estratto dal mio codice:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class ModbusRegister, Board;
typedef void (^DataBlockType)(NSArray *listRegister);
@interface EnergyEntry : NSManagedObject
- (void)invokeWithData: (NSArray *)listRegister;
@property (nonatomic, copy) DataBlockType datablock;
@end
#import "EnergyEntry.h"
@implementation EnergyEntry
@dynamic datablock;
- (void)invokeWithData: (NSArray *)listRegister{
self.datablock(listRegister);
}
@end
Quando ho cercato di conservare il blocco:
[energyEntry setValue:@"Energía activa" forKey:@"name"];
[energyEntry setValue:[NSNumber numberWithDouble:0] forKey:@"value"];
[energyEntry setValue:currentBoard forKey:@"board"];
[energyEntry setValue:^(NSArray *listRegister){
//...my block operations to store
} forKey:@"datablock"];
Infine quando invoco il blocco e l'errore viene generato:
NSArray *listRegister=... //my ready array
[energyEntry invokeWithData:listRegister];