我有一个带有App Delegate的.xib文件。在这个App Delegate中,我有一些变量实例:
//The model objects
NSString* _stringWord;
NSMutableArray *_images;
int _numberOfWordsTotal;
int _numberOfWords;
它们被方便地声明为属性:
@property (nonatomic, copy) NSString * stringWord;
@property (nonatomic) int numberOfWordsTotal;
@property (nonatomic) int numberOfWords;
@property (nonatomic, copy) NSMutableArray * images;
并在.m文件中合成
@synthesize stringWord = _stringWord;
@synthesize images = _images;
@synthesize numberOfWordsTotal = _numberOfWordsTotal;
@synthesize numberOfWords = _numberOfWords;
在App Delegate中,我确实对这些变量执行了一些操作。更具体地说,我将一些图像分配给_images变量。根据调试器,信息被正确存储。
在另一个.xib文件中,我想访问此委托的内容。所以我的想法是通过使用这个函数来访问整个委托:
Visual_PoetryAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
我可以看到委托变量被实例化,包括访问所有变量。但是,在处理它们时,变量是空的(前一个.xib中生成的值似乎没有存储)。
有任何想法或建议吗?有没有更好的方法从不同的.xib文件访问以前的委托?
答案 0 :(得分:3)
app委托不是全局变量的中央存储位置。将此数据移动到单个模型对象中(通过它的外观,它将类似于Poem
)。您可以从任何需要它的对象访问[Poem sharedPoem]
。或者,您可以在应用程序委托中实例化单个Poem
对象,并将其交给需要它的各种视图控制器。每种方法都有其优点。
有关正确使用app委托和模型对象的更多讨论,请参阅以下问题:
答案 1 :(得分:1)
更改副本以保留
@property (nonatomic, retain) NSString * stringWord;
@property (nonatomic) int numberOfWordsTotal;
@property (nonatomic) int numberOfWords;
@property (nonatomic, retain) NSMutableArray * images;