【问题标题】:How can I use a NSNumber from a different class? [duplicate]如何使用不同类的 NSNumber? [复制]
【发布时间】:2015-01-21 15:11:47
【问题描述】:

我正在尝试从不同的班级简单地获取 NSNumber

我的 Class2.h 中有什么:

#import "Class1.h"

@property (strong,nonatomic) NSNumber *rowTodelete;

这就是我的 Class2.m 的样子:

- (void)viewDidLoad {

    self.rowTodelete = 3;
}

在我的 Class1.h 中

#import "Class2.h"

在我的 Class1.m

-(void)viewDidAppear:(BOOL)animated
{

Class2 *secondClass = [[Class alloc] init];

    NSNumber *newNumber = secondClass.rowToDelete;

    NSLog(@"the new number is %@",self.newNumber);
}

而且我不断获得null 值。我只想从 Class2 中获取我的 NSNumber 并将其分配给 Class1 中的新 NSNumber。我做错了什么?

【问题讨论】:

  • 请在发布代码时更加小心。您不能将原语分配给对象 (self.rowTodelete = 3),也不能拥有名为 Class ([[Class alloc] init]) 的类。
  • 您确实意识到,当您给出差评时,它会将用户冻结在网站之外。当他们只想学习并变得更好时
  • 我只留下了评论,我没有给你投赞成票或反对票。
  • 我很抱歉。只是觉得我的问题是合理的
  • 你的问题是有道理的,但如果你发布的代码没有表现出给你带来麻烦的行为,有时人们很难帮助你。

标签: ios objective-c


【解决方案1】:

Class2 *secondClass = [[Class alloc] init]; 创建并实例化 Class 的新实例。以前没有人见过这种情况。这就是allocinit 所做的。因此,该类将具有其所有字段的初始默认值。

我不确定其中有多少是光顾,但提供更多信息:

ClassClass2 这样的类声明建立了一个模子。这是该类的实例如何起作用的设计模式。每个实例都是与模具分开的制造。

例如如果说Class2 有一个名为rowToDeleteNSNumber 属性,则表示该类的每个单独实例都有一个具有该名称的位置,它可以存储一个数字。

当您执行alloc] init] 时,您制造了一个全新的类实例。每个实例都有自己的名为rowToDelete 的单独存储。因此,您在viewDidAppear: 中制造的secondClass 实例与self.rowToDelete 的设置完全不同(对未显示的代码有一些小的假设),并且使用完全不同的存储。不同的实例,不同的存储。

想想NSMutableString 之类的东西。它将为字符串中的字符使用一些存储空间。每个字符串都应该有自己的存储空间,对一个字符串的更改不应影响其他任何字符串。 rowToDelete也一样。

如果它们都是视图控制器,并且选择一行的控制器负责显示对其进行操作的控制器,那么您通常会在创建时或在 segue 期间推送该值,具体取决于您是否使用 segue。如果情况相反,那么您可能希望在两者之间使用委托协议。

如果你能提供更多的上下文,我可以更具体。

【讨论】:

  • 那么这是错误的做法吗?
  • @burrGGG 如果您想将属性存储到类的实例并让其他人访问该属性,则第二个人需要访问同一个实例。没有足够的背景来自信地说更多。
【解决方案2】:

问题是你在class2的viewDidLoad中设置值

只有在 ViewController 被加载并即将显示时才会调用此方法。

我不知道您要实现的具体目标,但您可以将 class2 的超类更改为 NSObject 例如并将分配移至 class2 的 init 方法。或者您可以将 class2 保留为 viewController 子类,并将分配放在它的 init 方法之一中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多