Подтвердить что ты не робот

"Недостающий контекст для объявления метода" для метода переопределенного описания

Получает "Недостающий контекст для объявления метода" для моего метода переопределения. Можете ли вы сказать, что не так с кодом?

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

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

  @autoreleasepool {

      // Create a mutable array object, store its address in items variable
    NSMutableArray *items = [[NSMutableArray alloc]init];

    BNRItem *p = [[BNRItem alloc]init];
    NSLog(@"%@ %@ %@ %d", [p itemName], [p dateCreated], [p serialNumber], [p valueInDollars]);

    // This creates a new NSString, "Red Sofa" and gives it to the BNRItem
    [p setItemName:@"Red Sofa"];

    // This creates a new NSString, "A1B2C" and gives it to the BNRItem
    [p setSerialNumber:@"A1B2C"];

    // We send the value 100 to be used as the valueInDollars of this BNRItem
    [p setValueInDollars:100];

    // Destroy the array pointed to by items
    items = nil;

  }
    return 0;
}

-(NSString *)description // Missing context for method declaration
{
  NSString *descriptionString =
  [[NSString alloc]initWithFormat:@"%@ (%@): Worth $%d, recorded on %@",
   itemName;
   serialNumber;
   valueInDollars;
   dateCreated];

return descriptionString;

}

BNRItem.m

#import "BNRItem.h"

@implementation BNRItem

-(void)setItemName:(NSString *)str {
  itemName = str;
}

-(NSString *)itemName {
  return itemName;
}

-(void)setSerialNumber:(NSString *)str {
  serialNumber = str;
}

-(NSString *)serialNumber {
  return serialNumber;
}

-(void)setValueInDollars:(int)i {
  valueInDollars = i;
}

-(int)valueInDollars {
  return valueInDollars;
}

-(NSDate *)dateCreated {
  return dateCreated;
}

-(NSString *)description
{
  NSString *descriptionString = 
  [[NSString alloc]initWithFormat:@"%@ (%@): Worth $%d, recorded on %@",
   itemName,
   serialNumber; // Expected "]"
   valueInDollars, // Expression result unused
   dateCreated]; //Extraneous "]" before ";"

  return descriptionString;
}


@end
4b9b3361

Ответ 1

Ваш метод выглядит свободно плавающим внутри main.m. Метод экземпляра должен быть помещен внутри раздела реализации класса. (между @implementation и @end).

Я предполагаю, что вы должны переместить этот код в BNRItem.m.

Ответ 2

Если у вас есть что-то вроде char в самом начале вашего заголовка другого файла .m, его также вероятно, что эта ошибка будет соответствовать.

^//
//  EMServices.m
//  MyController
//
//  Created by EMart on 09.01.14.
//  Copyright (c) 2014 EMart. All rights reserved.
//