【问题标题】:How to Share Methods Between Classes如何在类之间共享方法
【发布时间】:2012-11-29 03:37:15
【问题描述】:

我想将标签的文本设置为来自不同类的单元格的文本。

在我的 MasterViewController 我有:

// SAVE TEXT OF SELECTED CELL

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cellString = cell.textLabel.text;
}

//SHARES VARIABLES BETWEEN CLASSES

- (ChemProjectMasterViewController*) sharedVariable
{
    static ChemProjectMasterViewController *myVariable = nil;

    if (myVariable == nil)
    {
        myVariable = [[[self class] alloc] init];
        myVariable.sharedCellString = cellString;
    }

    return myVariable;
}

我在 .h 中也有这个

@interface ChemProjectMasterViewController : UITableViewController

@property (nonatomic)NSString *cellString;
@property (nonatomic)NSString *sharedCellString;
+(ChemProjectMasterViewController*) sharedVariable;

@end

现在我要访问此方法的类是 DetailViewController。我有:

detailDescriptionLabel.text = [ChemProjectMasterViewController sharedVariable].sharedCellString;

其中 detailDescriptionLabel 只是一个文本标签。

** 该程序编译得很好,但是当我单击一个按钮时,我将标签文本设置为更改。该应用程序运行平稳,直到我按下导致它崩溃的按钮。主要目标是将 DetailViewController 中的标签文本设置为 MasterViewController 中的单元格文本。感谢您的帮助!

【问题讨论】:

  • 冒着过于明显的风险,detailDescriptionLabel.text 期待一个字符串。您正在传入一个视图控制器。为什么?
  • @StevenFisher - 他实际上是在传递一个字符串。他从类ChemProjectMasterViewController 访问一个名为sharedVariable 的变量的一个名为sharedCellString 的属性。
  • @jtetreault13 您在其标题中声明为+(ChemProjectMasterViewController*) sharedVariable;,在.m 文件中您将其定义为-(ChemProjectMasterViewController*) sharedVariable,我不确定,但这会产生问题。
  • 哦,你是对的。 [ChemProjectMasterViewController sharedVariable] 上的额外空格(已删除)将属性推到了右侧。

标签: objective-c ios xcode xcode4.5


【解决方案1】:

我看到的东西很少。

第一个,在 .h 中声明为类方法 (+),而在 .m 中声明为实例 (-)。

第二个是@property (nonatomic)NSString *sharedCellString;,它是不安全未保留的,让它变得强大。

如果有效,请告诉我?

【讨论】:

  • 好吧,我使 sharedCellString 变得强大,它似乎没有做任何事情,仍然得到相同的 SIGABRT。现在,当我进入 .h 并将其从类方法 (+) 更改为实例 (-) 时,它会抛出一个错误,提示“在 'id' 类型的对象上找不到属性 'sharedCellString'”
猜你喜欢
  • 2020-09-23
  • 2011-12-25
  • 2019-09-26
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多