对于常量,我更喜欢使用这样的 .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];
有关 Singleton 概念的更多信息,请在 Apple 文档中的 部分查看HERECreating a Singleton Instance
,并仔细查看他们提供的用于制作单例的代码,这应该会回答您对weak or strong
链接的询问。
但本质上,严格的单例实现只会在整个应用程序期间创建该类的一个实例。因此,如果您有 100 个指向它的对象不会改变您的记忆足迹,那么只有 1 个单例,但是如果您有 100 个对象,肯定会影响您的记忆。