0

NSLog期待していた文字列ではなく、出力 'Null' を返しています。これは、プライベート インスタンス変数などの問題であると思われますが、オブジェクト指向プログラミングに慣れていないため、原因を特定できません。

//The viewDidLoad method in MainGameDisplay.m:
- (void)viewDidLoad
{
    [super viewDidLoad];
    Engine *engine = [[Engine alloc] init];
    [engine setPlayerName: viewController];
}

文字列は によって入力されUITextField、プロパティは

//ViewController.h
 @property (strong, nonatomic) IBOutlet UITextField *PlayerNameTextView;

[engine setPlayerName: self]このメソッドは正常に動作し、 がに配置されている場合は正しい文字列を返しますが、ViewControllerの場所以外の場所で*PlayerNameTextViewはこの問題が発生します。

//Engine.m
@implementation Engine
{
    ViewController *firstPage;
}

NSString *Player;

-(void) setPlayerName: (ViewController *) name
{
    Player = [[name PlayerNameTextView] text];
    NSLog(@"%@", Player);
}
4

2 に答える 2

0

'name' が適切に初期化されていることを確認してください。NSLog の直前に assert(name != nil) を入れてみてください。または、さらに良いことに、NSLog にブレークポイントを設定し、変数を調べます。

別の提案: メソッドを -(void) setPlayerName:(NSString*)name にしないのはなぜですか? これは、View Controller へのポインターを渡すよりも簡単で、デバッグが容易になります。

于 2012-11-06T03:06:07.773 に答える
0

NSLog戻り値の型は、ドキュメントでvoid確認できるとおりです。何も返さないため、呼び出しの戻り値を期待する理由はありません。

于 2012-11-06T02:56:44.850 に答える