Apfel empfehlen „Verwenden Sie Zugriffsmethoden nicht in Initializer Methoden und dealloc“ mit diesem Dokument: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.htmlWas ist der richtige Weg, um Block in Initialisierungsmethoden einzurichten?
Wenn ich den Block in den Initialisierer Methoden, Block Verweise auf die Eigenschaft einrichten möchten, wie ich besser Code schreiben ?
typedef void(^customBlock)();
@interface CustomObject : NSObject
@property (nonatomic, strong) NSString *string;
@property (nonatomic, copy) customBlock customBlock1;
@property (nonatomic, copy) customBlock customBlock2;
@end
@implementation CustomObject
- (instancetype)init {
self = [super init];
if (self) {
__weak __typeof(self) weakSelf = self;
_customBlock1 =^{
__typeof(self) strongSelf = weakSelf;
strongSelf -> _string = @"string by iVar";
};
_customBlock2 = ^{
weakSelf.string = @"string by accessor";
};
}
return self;
}
@end
Folgen Sie dieser "Empfehlung" nicht. Es ist bedeutungslos. –
@ AminNegm-Awad Ich verstehe, was du meinst. Ich schrieb die Demo für dieses Problem für ["Verwenden Sie keine Accessor-Methoden in Initialisierungsmethoden und Dealloc"] (https://github.com/yangcaimu/UseAccessorMethodsInInitializerMethodsAndDeallocDemo). – Lavare
Sie missverstanden mich: * Apples * Empfehlung ist bedeutungslos. Dies ist eine lange Diskussion und man kann ziemlich sicher sein, dass es zu Dutzenden von Kommentaren führen wird. –