3

コアデータがコアデータ以外のものを参照しているとは思えませんでした。したがって、参照サイクルが存在する方法はありません。最大コア データ オブジェクトは、別のコアデータ オブジェクトを指します。

しかし、私は間違っているかもしれません。

Managedobjectcontext は、コア データへの強い参照を保持しません。

ここにガイドはありますか?

4

2 に答える 2

1

私は現在、参照が強いか弱いかについても確信が持てません。前の人たちは強いはずだと言いましたが、私はこれを見つけました:

https://developer.apple.com/library/prerelease/watchos/documentation/Cocoa/Conceptual/CoreData/CoreDataandStoryboards.html#//apple_ref/doc/uid/TP40001075-CH10-SW1

コード例では、Apple はこれを行います。

@interface DetailViewController : UIViewController

@property (weak) AAAEmployeeMO *employee;

@end

私たちがよく行うのは、オブジェクトの主キーへの強い参照を持ち、オブジェクトが nil の場合に遅延初期化を行う弱いプロパティを持つことです。このような;

@interface MyVC : UIViewController

@property (nonatomic, strong) NSString *objectId; 
@property (nonatomic, weak) SomeObject *myCoolObject; 

@end 

@implementation MyVC 

- (SomeObject *)myCoolObject {
    if (_myCoolObject == nil) {
        _myCoolObject = [SomeObject MR_findFirstByAttribute:@"primaryKey" withValue:self.objectId];
    }
    return _myCoolObject; 
} 

ただし、これが正しい方法であるかどうかはまだわかりません。私を修正してください。

于 2015-10-22T01:14:14.673 に答える