Как я называю этот метод?(очень новичок, который испытывает трудности с Obj-C) - PullRequest
1 голос
/ 26 апреля 2011

Вот мой код ... моя проблема в том, что я не знаю, как вызвать это (checkIfDatabaseExists) из AppDidFinishLaunching в моем файле AppDelegate.m.

#import "SQLiteDB.h"

static SQLiteDB *sharedSQLiteDB = nil;  //  makes this a singleton class

@implementation SQLiteDB

@synthesize db, dbPath, databaseKey;


//--------------    check for database or create it    ----------------|
#pragma mark Singleton Methods

+ (SQLiteDB *) sharedSQLiteDB  {

    if(!sharedSQLiteDB)  {
        sharedSQLiteDB = [[SQLiteDB alloc] init];
        [sharedSQLiteDB checkIfDatabaseExists];  //  check to see if d/b exists
    }
    return sharedSQLiteDB;
}   

Ответы [ 3 ]

2 голосов
/ 26 апреля 2011

В файле делегата приложения импортируйте SQLiteDB.h, затем вызовите

SQLiteDB *db = [SQLiteDB sharedSQLiteDB];

Это то, что вы имели в виду?

Вы объявили sharedSQLiteDB как метод класса (этот начальный + знак), поэтому вы вызываете его в классе (как указано выше). Ваш вызов checkIfDatabaseExists предполагает, что это метод экземпляра (объявленный с -).

Я бы предложил назвать ваш статический экземпляр SQLiteDB начальным _ или чем-то, чтобы отличить его от метода с именем sharedSQLiteDB. В противном случае это сбивает с толку.

Я что-то упустил или это помогает?

2 голосов
/ 26 апреля 2011

Вы вызываете статическое сообщение с [ClassName messageName], поэтому:

 SQLiteDB* sdb = [SQLiteDB sharedSQLiteDB];
1 голос
/ 26 апреля 2011

Вы можете попробовать:

[[SQLiteDB sharedSQLiteDB] checkIfDatabaseExists];

sharedSQLiteDB - это метод класса, который реализует шаблон проектирования Singleton. (или общий экземпляр в Какао).
Вы можете узнать больше об этом здесь: http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Singleton.html

В основном этот шаблон гарантирует, что во время выполнения создается только один объект определенного класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...