Я довольно новичок в разработке для iPhone, поэтому, возможно, вы поможете мне с этой проблемой:
У меня есть объект "предпочтения", который содержит одну строку NSString:
(Весь код упрощен ...)
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface Preferences : NSObject {
NSString *username;
}
-(void)loadPreferences;
@property(nonatomic,retain) NSString *username;
@end
Реализация выглядит так:
#import "Preferences.h"
@implementation Preferenes
@synthesize username;
-(void)loadPreferences{
username=@"MyUser";
}
-(void) dealloc {
[username release];
}
@end
Далее я использую ссылку сохранения для этого объекта в моем главном делегате:
#import <UIKit/UIKit.h>
@interface MainDelegate : NSObject <UIApplicationDelegate> {
...
Preferences *prefs;
}
@property(retain,nonatomic) Preferences *prefs;
Реализация:
#import "MainDelegate.h"
#import "Preferences.h";
@implementation MainDelegate
@synthesize prefs;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
prefs=[[Preferences alloc] init];
NSLog(@"Username: %@",prefs.username); // THIS WORKS
}
Так что я могу получить доступ к prefs.username в главном делегате.
Теперь я хочу получить доступ к справке по настройкам из моего основного документа.
Я пытаюсь сделать это так:
MainDelegate *delegate = (MainDelegate*) [[UIApplication sharedApplication] delegate];
Preferences *prefs=delegate.prefs;
// This works...
NSLog(@"The Username is: %@",prefs.username);
// CRASH
Когда я пытаюсь получить доступ к объекту «username» в объекте предпочтений, программа падает, показывая только информацию о лицензии GNU.
Я думаю, что что-то идет не так, что, возможно, объект уже выпущен, когда я пытаюсь получить к нему доступ ...
Можете ли вы помочь мне?
Спасибо!