2

下面的编码正在工作,我可以在第二个屏幕中看到这些值。但是我在其他具有这种格式的不同变量的类中使用相同的方法。但是,如果在我用点键入类名之后,它不会向我显示变量。我想不通。有没有办法将值传递给其他类。

        InstallProfiler_2 *installProfiler2 = [[InstallProfiler_2 alloc] initWithNibName:@"InstallProfiler_2" bundle:nil];

        installProfiler2.profilerType2 = profilerType;

        [self.navigationController pushViewController:installProfiler2 animated:NO];
        [installProfiler2 release];
4

3 回答 3

2

确保:

  • 您已经导入了类头。
  • @property声明在此标头中,而不是类扩展。

@property指 ivars 所以当你说

如果在我用点键入类名之后

这个术语是不正确的,您可能是指在您开始输入指向类实例的变量的名称之后。

类A.h

@interface ClassA : NSObject

@property (nonatomic, weak) NSInteger myInt;

@end

类A.m

@implementation ClassA

@synthesize myInt = _myInt;

@end

B类.m

#import "ClassA.h"   // <- Import the header of the class

@ implementation ClassB

//  .. other methods and stuff

- (void)myMethod;
{
     ClassA *instanceOfClassA = [[ClassA alloc] init];   // <- Working with an instance not a class
     instanceOfClassA.myInt = 1;
}

@end

更新

确保你@property ()没有readonly圆括号之间。还要确保您@synthesize在实现中具有 ivar,或者为 ivar 同时提供了 getter 和 setter。

未能显示一些相关代码,因此我们实际上可以看到您在做什么 - 我们在这里非常盲目地回答。

于 2012-01-04T15:36:04.337 回答
0

点语法仅适用于 property/synthesize

于 2012-01-04T15:26:33.170 回答
0

创建自定义设置器/获取器:

+ (BOOL)awesomeClassVar {
    return _classVar;
}

+ (void)setAwesomeClassVar:(BOOL)newVar {
    _classVar = newVar;
}

然后作为另一个类的方法调用:

BOOL theOtherClassVar = [AwesomeClass awesomeClassVar];
[AwesomeClass setAwesomeClassVar:!theOtherClassVar];
于 2012-01-04T15:27:32.930 回答