Chcę utrzymywać blok wewnątrz danych podstawowych NSManagedObject, jeśli jest to możliwe. Posiadam dziedziczoną klasę z NSManagedObject. Ta klasa ma blok do zaspokojenia niektórych połączeń asynchronicznych. Próbowałem przechowywać blok jako atrybut przejściowy i przejściowy. kiedy próbuję wywołać blok przed ładowaniem mój NSManagedObject Mam zły dostęp do pamięci "EXC_BAD_ACCESS"
.Czy jest możliwe przechowywanie bloku wewnątrz obiektu NSManagedObject?
Jeśli nie sprawdzić Transformable flagę Mam wyjątek podobny do tego:
-[__NSStackBlock__ encodeWithCoder:]: unrecognized selector sent to instance 0xbfffd930
Jestem nowy w iOS. Pracuję w systemie iOS 5 SDK z włączonym ARC. Jest to wyciąg z mojego kodu:
#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
Kiedy próbowałem zapisać blok:
[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"];
Wreszcie kiedy wywołać blok i błąd został zwolniony:
NSArray *listRegister=... //my ready array
[energyEntry invokeWithData:listRegister];