NSLog返回null而不是字符串

时间:2012-11-06 02:28:25

标签: objective-c ios xcode ios6 nslog

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);
}

2 个答案:

答案 0 :(得分:0)

NSLog返回类型为void,您可以看到in it's documentation。没有理由期望调用它的任何返回值,因为它不会返回任何内容。

答案 1 :(得分:0)

确保'name'已正确初始化。尝试在NSLog之前放置一个断言(名称!= nil)。或者更好的是,在NSLog上设置断点并检查变量。

另一个建议:为什么不制作方法 - (void)setPlayerName:(NSString *)名称?这比传递指向视图控制器的指针更简单,并且更容易调试。