2012-03-06 1 views
0

Вот простой код. Он работает, но отсутствует одно значение. Я отправил код. Пожалуйста, помогите мне.Ошибка Objective-C

#import <Foundation/Foundation.h> 

@interface StockHolding : NSObject 
{ 
    //declear 3 instance varriable 
    float purchaseSharePrice; 
    float currentSharePrice; 
    int numberOfShares; 
} 


@property float purchaseSahrePrice; 
@property float currentSharePrice; 
@property int numberOfShares; 

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

@end 

Вот точка м файла

#import "StockHolding.h" 

@implementation StockHolding 
@synthesize currentSharePrice,purchaseSahrePrice; 
@synthesize numberOfShares; 


-(float)valueInDollars 
{ 
    return currentSharePrice *numberOfShares; 
} 



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

@end

Вот главный файл

#import <Foundation/Foundation.h> 
#import "StockHolding.h" 

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

    @autoreleasepool { 

     StockHolding *yahoo = [[StockHolding alloc] init]; 
     StockHolding *google =[[StockHolding alloc] init]; 
     StockHolding *apple = [[StockHolding alloc] init]; 
     //NSMutableArray *stockList = [NSMutableArray array]; 

     [yahoo setPurchaseSahrePrice:4.50]; 
     [yahoo setCurrentSharePrice:2.30]; 
     [yahoo setNumberOfShares:40]; 
     // [stockList addObject:yahoo]; 

     [google setPurchaseSahrePrice:12.19]; 
     [google setCurrentSharePrice:10.56]; 
     [google setNumberOfShares:90 ]; 
     // [stockList addObject:google]; 


     [apple setPurchaseSahrePrice:45.51]; 
     [apple setCurrentSharePrice:49.51]; 
     [apple setNumberOfShares:210]; 
     // [stockList addObject:apple]; 

     // using an array with objects 
     NSMutableArray *stockList = [NSMutableArray arrayWithObjects:yahoo,google,apple, nil]; 


     //call the methods 
     for(StockHolding *n in stockList) 
     { 
      //Call the methods 
      float cost = [n costInDollars]; 
      float value = [n valueInDollars]; 
      NSLog(@"Bought stock for $%.2f, It is now at $%.2f, I have %d shares, They cost me $%.2f, Now they are worth $%.2f", 
        [n purchaseSahrePrice],[n currentSharePrice],[n numberOfShares],cost,value); 
     } 


    } 
    return 0; 
} 

Вот проблема этот код работает, но отсутствует одно значение, которое Стоимость.

Thanks

Ben.

С уважением.

2012-03-06 20:42:59.160 Stocks[1761:707] Bought stock for $4.50, It is now at $2.30, I have 40 shares, They cost me $0.00, Now they are worth $92.00 
2012-03-06 20:42:59.162 Stocks[1761:707] Bought stock for $12.19, It is now at $10.56, I have 90 shares, They cost me $0.00, Now they are worth $950.40 
2012-03-06 20:42:59.163 Stocks[1761:707] Bought stock for $45.51, It is now at $49.51, I have 210 shares, They cost me $0.00, Now they are worth $10397.10 

ответ

2

Похоже опечатка:

Вы называете собственности сеттера, который называется purchaseSahrePrice: [яблоко setPurchaseSahrePrice: 45,51];

Но в способе получения стоимости вы используете переменную экземпляра, называемую purchaseSharePrice. Собственность должна быть просто переименована в buySharePrice, и она должна работать.

+0

ОК, спасибо, что он работает. – Ben

1

Вы опечатка 'доля':

purchaseSahrePrice 

Также у вас есть утечка памяти; вам нужно указать autorelease объекты, которые вы выделили.

+0

Спасибо, я только что исправил проблему. – Ben

2

У вас есть ошибка орфографического кода в коде выше: purchaseSahrePrice в строке @synthesis

+0

Спасибо. Я только что исправил проблему. – Ben