指向现有对象?

时间:2012-12-28 09:47:55

标签: objective-c

好的,我有一个我在QuickNoteNotesDataController.m

中初始化的课程
QuickNoteNotesDataController *dataController = [[QuickNoteNotesDataController alloc] init];

然后我需要能够从另一个文件QuickNoteDetailViewController.m

访问该类的同一个实例

如何在不重新调用alloc init并创建新实例的情况下获取指向同一实例的指针?

3 个答案:

答案 0 :(得分:1)

与其他类相同的实例:您需要创建一个共享实例。

或者是静态属性。

但请勿使用extern variable

答案 1 :(得分:1)

如果您只需要一个实例,则可以使用单例:

//In QuickNoteNotesDataController.m
static QuickNoteNotesDataController *sharedInstance;
+ (id)sharedDataController {
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        sharedInstance = [[QuickNoteNotesDataController alloc] init];
    });
    return sharedInstance;
}

否则您可以在QuickNoteDetailViewController

中创建一个属性
@property (nonatomic, strong) QuickNoteNotesDataController *dataController

并在创建detailViewController时将已经拥有的dataController设置为属性。

答案 2 :(得分:1)

您可以将QuickNoteNotesDataController类设为Singleton,然后您可以在整个应用程序中共享此类的单个实例。