【发布时间】:2012-11-11 20:08:58
【问题描述】:
希望你能帮我解决我的实际问题:
我已经建立了一个带有导航控制器的新项目。对于项目的表格视图,我为其添加了一个新类,名为“TableViewController.h”和“TableViewController.m”。
在这个类中,我在 .h 中声明了一个 NSString 的属性,以便从其他类访问它,如下所示:
@property (strong, nonatomic) NSString *testString;
在 .m 中,我将其合成如下:
@synthesize testString;
现在我在表视图控制器的 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath-Method 中设置如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
testString = @"Hello, World!";
}
现在为下一个视图创建了一个新的 UIViewController 类,当我点击一个单元格时它应该出现(到目前为止一切正常)。在这个名为“SecondView”的 UIViewController 中,我导入了 TableViewController 的 .h 文件。 此外,我在 SecondView.m 中有此代码:
-(void) viewDidLoad
{
[super viewDidLoad];
TableViewController *demoObject = [TableViewController alloc] init]
NSLog (@"Teststring is: %@" [demoObject.testString]);
}
现在,当我启动模拟器时,我得到以下输出: 测试字符串为:(null)
当我在 TableViewController 中对 testString 进行 NSLog 记录时,我得到“Hello, World”,但为什么它没有“转移”到 SecondView 类并生成所需的输出?
【问题讨论】:
-
请尝试理解面向对象的编程。执行
[[TableViewController alloc] init]会创建该类的一个新实例,该实例与您之前创建的该类的任何其他实例完全不同。因此,以前创建的实例中设置的任何值都无法从新实例中访问。 -
天哪,你说的太对了!这是朝着正确方向迈出的一步,谢谢!
标签: objective-c ios xcode cocoa-touch cocoa