почему мои значения NSString теряются в классе определения?это нормально? - PullRequest
0 голосов
/ 20 марта 2011

Я определяю некоторые простые переменные в классе типа NSString. Одна из них, например, сохраняет путь к моей базе данных sqlite и т. Д.чтобы увидеть его значение вне этой функции ... он теряет свое значение во время выполнения, (нет, я не перезаписываю или что-то еще ...) вот мой код ...

файл app.h

@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
.....................
    NSString *site_domain;

    NSString *databaseName;
    NSString *databasePath;
..........................
}

файл app.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    databaseName = @"database.sqlite";  
    site_domain=@"http://localhost/webservice";   

         NSLog(@"%@",site_domain);
// inside this function I can use the value, ..if I call whatever function from 
//this function, that function can also use the value...
}

-(void) functionTest {
   NSLog(@"%@",site_domain);
//here the value is lost, it's like it can't reach it's pointer or something...
//puts on a wierd string
}

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 20 марта 2011

Что я делаю не так?

Вы не публикуете достаточно информации. :)

//here the value is lost, it's like it can't reach it's pointer or something...
//puts on a wierd string

Что это значит? Покажите строку. functionTest определен в том же исходном файле? Откуда это называется?

Поскольку вы используете постоянные строки (@ ""), нет необходимости сохранять / освобождать, так что это не проблема.

Это действительно строковые значения, которые вы используете?

0 голосов
/ 20 марта 2011

Поскольку вы никогда не вступаете во владение им, ваша строка автоматически высвобождается пулом автоматических выпусков. В вашем didFinishLaunchingWithOptions: методе попробуйте использовать:

site_domain = [[NSString alloc] initWithString:@"http://..."];

И не забудьте выпустить его в методе dealloc

-(void)dealloc
{
    [site_domain release];
}
...