【问题标题】:Why can't I access variables when I subclass a customised UIViewController?为什么我在子类化自定义 UIViewController 时无法访问变量?
【发布时间】:2011-12-11 10:39:19
【问题描述】:

我是 iOS 开发新手,如果答案很明显,我深表歉意……但对我来说不是。 我有一个应用程序,其根目录有一个导航控制器。 我有许多非常相似的应用程序要创建的区域。 这些都是 UItableviewcontroller,它已经完成了相当多的定制,以允许在 tableview 旁边的按钮和其他控件,这些控件的大小已经减小,以允许在其旁边和下方进行控件。 按钮、文本、背景等以及加载的数据都必须是特定于 APP 的。 我通过简单地在 Xcode 中添加一个新的文件子类来创建一个 UItableviewcontroller 子类。 我在 xib 中创建了我的界面...创建了所有方法来驱动我需要的东西。 看起来不错……一切似乎都很好。如果我单独使用它...效果很好。

问题:我不知道如何子类化我的自定义子类 UITVController! 它的任何属性都不能从新的子类中获得。 我显然不明白这里的工作原理。

我尝试添加一个新文件 > UIViewcontroller 子类并将超类更改为我的自定义超类...无济于事。没有可访问的属性。

我挖了又挖,变得比其他任何事情都更困惑。 有没有好心的人帮我把它弄好。挫败感正在形成。 谢谢 凯斯佩

编辑: 哇发现问题了。我已经打开 Xcode 很多天,打开了几个项目。 它完全变得奇怪了! 事实上 jrturton 和 eugene ......我确实知道我在做什么(我以为我快疯了......之前在我的应用程序中做过这个,突然没有工作)Xcode 完全失去了它的大脑!

以前有人见过 Xcode 这样做吗???使用 4.1

该死的,浪费了包括你在内的大量宝贵时间。 谢谢小伙伴们

【问题讨论】:

  • 请包括您的子类和您的子子类的 .h 文件,就像它们目前的样子。
  • 好的,我将编辑并包含一个非常精简的示例。实际的应用程序控制器文件很大,有很多变量等。即使使用我将发布的示例,我也无法让它工作。谢谢 jrturton
  • 我已经让它做了一些有趣的事情,在重新启动时会修复,是的。最烦人的。

标签: objective-c ios properties uitableview subclassing


【解决方案1】:

当您对任何东西进行子类化时,您可以通过点语法寻址 self 来访问父类的属性

@interface BaseClass : NSObject {
 @public
  NSString *baseclassString;
}

@property (nonatomic, copy) NSString *name;

@end

.h

@interface HigherClass : BaseClass

@end

.m

@implementation HigherClass

- (id)init {
  self = [super init];
  self.name = @"Hola";
  self->baseclassString = @"Hola";
  return self;
}

- (void)viewDidLoad {
  NSLog(@"name: %@", self.name);
}
@end

这一切都不是 100% 的内存清理,但您必须了解这里发生的事情并根据您的应用程序适当地调整它。

【讨论】:

  • 所以如果我想在没有本地点符号的情况下使用它,我可以在子类中重新声明和分配?
  • 你可以这样做,但这不是你需要的。尝试寻址“self->localVariable”,-> 符号访问在头文件中声明的局部变量,而不是属性。只需确保将超类中的局部变量设置为 @public。
  • 好的...谢谢。无论如何,不​​是所有的 vars 都是公开的,还是 @public 来确保编译器自己运行?
  • 如您所说,它用于编译器。虽然我不太了解新的编译器和 ARC,但这可能会产生错误消息。
  • 对...不确定我是否理解您所说的“尝试解决'self->localVariable'”的意思,一个例子会很好...在baseclass.h中:NSString *baseclassString:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 2020-06-20
相关资源
最近更新 更多