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);
}
答案 0 :(得分:0)
NSLog
返回类型为void
,您可以看到in it's documentation。没有理由期望调用它的任何返回值,因为它不会返回任何内容。
答案 1 :(得分:0)
确保'name'已正确初始化。尝试在NSLog之前放置一个断言(名称!= nil)。或者更好的是,在NSLog上设置断点并检查变量。
另一个建议:为什么不制作方法 - (void)setPlayerName:(NSString *)名称?这比传递指向视图控制器的指针更简单,并且更容易调试。