Я пытался настроить свойство экземпляра класса, который сам является классом, который содержит переменные экземпляра. Я хотел бы получить доступ к этим как свойства. В C # это легко сделать с помощью предварительно установленных переменных get и set:
public class TheOverallClass
{
private ClassName _propertyName;
public ClassName PropertyName
{
get { return _propertyName; }
set { _propertyName = value; }
}
... и PropertyName создается в конструкторе:
public TheOverallClass()
{
PropertyName = new ClassName();
}
}
Скажем, у PropertyName есть переменная / свойство экземпляра с именем ThisValue, после чего я могу получить к нему доступ:
TheOverallClass overallClass = new TheOverallClass();
overallClass.PropertyName.ThisValue = 20; // int
Console.WriteLine(overallClass.PropertyName.ThisValue.ToString());
Как бы я поступил так в Objective-C? Я попробовал, но столкнулся с трудностями.
Эквивалент PropertyName кодируется как:
... в AnotherClass.h:
@interface AnotherClass : NSObject {
int thisValue;
}
@property (readwrite,assign) int ThisValue;
@end
... и в AnotherClass.m
@implementation AnotherClass
@synthesize ThisValue=thisValue;
@end
Это затем используется в эквиваленте ClassName, MyClass:
... в MyClass.h:
@class AnotherClass;
@interface MyClass : NSObject {
AnotherClass* another;
}
@property (nonatomic,retain) AnotherClass* Another;
@end
... и в MyClass.m:
@implementation MyClass
@synthesize Another=another;
@end
Когда я пытаюсь получить / установить значения в коде, XCode возвращает «Доступ к неизвестному компоненту ThisValue свойства». Код, который я использую для доступа:
MyClass* me = [[MyClass alloc] init];
me.Another.ThisValue = 20;
NSLog(@"Value = %i", me.Another.ThisValue);
Что я делаю не так?