【问题标题】:Right method of accessing properties of objects inside other objects in Objective-C在Objective-C中访问其他对象内部对象属性的正确方法
【发布时间】:2011-07-11 10:26:38
【问题描述】:

我有一个单例类 SharedDataObject,它有另一个类对象 myClass。 MyClass 也有 BOOL 变量。我为 MyClass 和 myClass 实例变量提供了访问器(非原子,保留)和(分配,读写)。我也合成了它们中的每一个。但是当我访问它们以读取值或写入值时

[[SharedDataObject getInstance].myClass available];

[[SharedDataObject getInstance].myClass setAvailable:YES];

它给了我以下警告:

 no 'available:' method found
 no 'setAvailable' method found

但我可以读取和写入值。我想删除警告。我究竟做错了什么?或者如果访问它的方式错误?

类声明是:

@interface SharedDataObject : NSObject {
    MyClass *myClass;
}
@property (nonatomic, retain) MyClass *myClass;

+ (SharedDataObject*) getInstance;

@end


@interface MyClass : NSObject {
    BOOL available;
}
@property (assign, readwrite) BOOL available;

@end

【问题讨论】:

    标签: objective-c ipad class-variables


    【解决方案1】:

    检查一下:

    1. 包括MyClass 的.h
    2. 单例的 myClass 属性返回 MyClass*,而不是某些基类(在更新问题时回答)

    【讨论】:

      【解决方案2】:

      如果你这样做会发生什么

      [SharedDataObject getInstance].myClass.available
      

      【讨论】:

      • 它给出了同样的警告。没什么不同。
      【解决方案3】:

      如果我理解你的话,你的 myClass 是你的 SharedDataObject 类的一个类属性,所以你不能访问它,因为它是一个实例属性。

      您能否向我们提供类的完整声明?

      [[SharedDataObject myClass] available]
      

      有效吗?

      【讨论】:

      • 我附加了类声明。我认为您的意思是 [[[SharedDataObject getInstance] myClass] 可用]?是的,它也给出了同样的警告。
      • 我认为你的“myClass”既是类属性也不是实例属性:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多