Как я могу присвоить значения другой переменной класса в target-c - PullRequest
2 голосов
/ 04 января 2012

Приведенная ниже кодировка работает, и я вижу значения на моем втором экране.Но я использую то же самое в других классах с другими переменными в этом формате.Но это не покажет мне переменную, если после того, как я наберу имя класса с точкой.Я не могу понять это.Есть ли способ передать значения в другой класс.

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

        installProfiler2.profilerType2 = profilerType;

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

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Убедитесь, что:

  • Вы импортировали заголовок класса.
  • Объявления @property находятся в этом заголовке и не являются расширением класса.

@property относится к ивару, поэтому, когда вы говорите

если после того, как я наберу имя класса с точкой

эта терминология неверна, вы, вероятно, имеете в виду после того, как начнете вводить имя переменной, которая указывает на экземпляр класса.

ClassA.h

@interface ClassA : NSObject

@property (nonatomic, weak) NSInteger myInt;

@end

ClassA.m

@implementation ClassA

@synthesize myInt = _myInt;

@end

ClassB.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 d ivar в реализации, либо вы предоставили и getter и setter для ivar.

В противном случае отображается какой-то соответствующий код, чтобы мы могли на самом деле увидеть, что вы делаете - мы отвечаем здесь довольно слепо.

0 голосов
/ 04 января 2012

Создайте пользовательский установщик / получатель:

+ (BOOL)awesomeClassVar {
    return _classVar;
}

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

, а затем вызовите метод из другого класса:

BOOL theOtherClassVar = [AwesomeClass awesomeClassVar];
[AwesomeClass setAwesomeClassVar:!theOtherClassVar];
0 голосов
/ 04 января 2012

Синтаксис с точками доступен только для свойства / синтеза

...