1

以下のように、appdelegate 内のインスタンス変数として NSString があります。

distributedLCAAppDelegate.h:

@class distributedLCAViewController;

@interface distributedLCAAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
distributedLCAViewController *viewController;
NSString *token;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet distributedLCAViewController *viewController;
@property (nonatomic, copy) NSString *token;

@end

distributedLCAAppDelegate.m のセクション:

@implementation distributedLCAAppDelegate

@synthesize window;
@synthesize viewController;
@synthesize token;

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
token = [NSString stringWithFormat:@"%@",deviceToken];
token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
token = [token substringWithRange:NSMakeRange(1, [token length]-2)];
}

ビュー コントローラー内でこのトークン変数を使用できるようにする必要があります。現在、これは私が持っているものです:

distributedLCAViewController.m 内のセクション:

- (IBAction)switchWasActivated:(id)sender
{
    NSString *token2 = [[[distributedLCAAppDelegate alloc] token] autorelease];
}

ただし、token2 = 「無効な cfstringref」です。

最初に、トークンを返すだけの getToken というパブリック メソッドを宣言しようとしました。しかし、その場合も同じ問題が発生していました。

どんな助けでも大歓迎です!

4

4 に答える 4

2

これを試してください:(更新済み)(修正済み)

NSString* token2 = ((distributedLCAAppDelegate*)[[UIApplication sharedApplication] delegate]).token;
于 2012-04-10T05:05:56.103 に答える
2

フォローしてみてください -

- (IBAction)switchWasActivated:(id)sender {
    distributedLCAAppDelegate *delegate = (distributedLCAAppDelegate *) [[UIApplication sharedApplication] delegate];
    NSString *token2 = delegate.token;

}

于 2012-04-10T05:06:58.520 に答える
0
distributedLCAAppDelegate* delegateobj = [(distributedLCAAppDelegate*)[UIApplication sharedApplication] delegate];
NSString *token_ = delegateobj.token;
NSLog(@"token_ :%@",token_);

これを試してください、うまくいくはずです

于 2012-04-10T05:16:45.817 に答える
0

デリゲート アウトレットが distributedLCAAppDelegate に設定されている場合、「MainWindow.xib」でファイルの所有者を確認できますか? Interface Builder の黄色のボックス アイコンを Ctrl キーを押しながらクリックします。

于 2012-04-10T06:12:47.707 に答える