对于常量,我更喜欢使用这样的 .h 文件
// ConstanteDef.h
#pragma mark Entity Name Constante
#define kItemInfos @"ItemInfos"
#define kCategorie_DItems @"Categorie_DItems"
#define kCommerce @"Commerce"
#define kListe @"Liste"
#define kListeItem @"ListeItem"
#define kPrixElement @"PrixElement"
#define kTypeDe_CommerceOuListe @"TypeDe_CommerceOuListe"
虽然我会使用 Singleton 来返回更复杂的元素。
这是我使用核心数据简化我的生活而不是到处重写相同代码的单例。
@interface CoreDataController : NSObject {
NSManagedObjectContext *leManagedObjectContext;
NSManagedObjectModel *leManagedObjectModel;
@private
Commerce_MO *leCommerceAucun;
}
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
#pragma mark Objet par Défaut
@property (nonatomic, retain, readonly) Commerce_MO *commerceAucun;
#pragma mark Nouvel Objet
// new = retain count = 1, celui qui commande est responsable de la mémoire.
- (id)newMOforClass:(Class)uneClasse; // Pas le mieux, mais pourrais servir pendant le run time. Retourne nil si uneClasse ne correspond pas à quelque chose.
- (PrixElement_MO *)newPrixElement;
- (ItemInfos_MO *)newItemInfos;
- (Commerce_MO *)newCommerce;
- (Liste_MO *)newListe;
- (ListeItem_MO *)newListeItem;
#pragma mark Singleton call
+ (CoreDataController *)sharedCoreDataController;
@end
所以在我的代码中,当我需要创建一个新实体时,我只需要这样做:
CoreDataController *cdc = [CoreDataController sharedCoreDataController];
Liste_MO * = [cdc newListe];
有关单例概念的更多信息,请查看 Apple 文档中 Creating a Singleton Instance 部分中的 HERE,并仔细查看他们提供的用于制作单例的代码,这应该可以回答您对 weak or strong 的询问链接到它。
但本质上,严格的单例实现只会在整个应用程序期间创建该类的一个实例。因此,如果你有 100 个对象指向它并不会改变你的记忆足迹,那么只有 1 个单例,但是如果你有 100 个对象肯定会影响你的记忆。