Почему переменные в созданном классе не отображаются в main()?

Спойлеры:
StackHolding.h
#import <Foundation/Foundation.h>

@interface StockHolding : NSObject
{
    float purchaseSharePrice;
    float currentSharePrice;
    int numberOfShares;
}

@property float purchaseSharePrice;
@property float currentSharePrice;
@property int numberOfShares;

- (float)costInDollars;
- (float)valueInDollars;

@end
StackHolding.m
#import "StockHolding.h"

@implementation StockHolding

@synthesize purchaseSharePrice, currentSharePrice, numberOfShares;

- (float)costInDollars
{
    return purchaseSharePrice * numberOfShares;
}

- (float)valueInDollars
{
    return currentSharePrice * numberOfShares;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "StockHolding.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        NSArray *threeobjects = [NSArray arrayWithObjects:purchaseSharePrice, currentSharePrice, numberOfShares, nil];
        
    }
    return 0;
}


Xcode не видит переменные из другого класса, дальше не стал продолжать писать код. То же самое было, после того, как я вводил пример из учебника.
  • Вопрос задан
  • 2462 просмотра
Пригласить эксперта
Ответы на вопрос 2
rafuck
@rafuck
Чтобы получить доступ к свойствам объекта, нужно сначала этот объект создать. В вашем случае необходимо создать экземпляр класса StockHolding
Ответ написан
Комментировать
@s0L
Кошмар какой, вы бы почитали повнимательней учебник. У вас в main в массив добавляются переменные, которые нигде не объявлены это раз. И в массив добавляются C типы, вместо объектов это два.

Например вот так будет правильно:
StockHolding* obj = [StockHolding new];
obj.purchaseSharePrice = 1;
obj.currentSharePrice = 2;
obj.numberOfShares = 3;

NSArray* fourobjects = @[@(obj.purchaseSharePrice), @(obj.currentSharePrice), 
     @(obj.numberOfShares), @([obj costInDollars])];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы