0

NSLog正在返回输出“Null”而不是我预期的字符串。我怀疑这是私有实例变量等的问题,但由于我不熟悉面向对象的编程,我无法确定原因。

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

字符串由 a 输入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

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

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

于 2012-11-06T03:06:07.773 回答
0

NSLog返回类型如您在其文档void中所见。没有理由期望调用它有任何返回值,因为它不返回任何东西。

于 2012-11-06T02:56:44.850 回答