В другом файле:
@implementation
реализация чего?необходимо указать.
В последнем файле:
Foo objA;
NSLog([objA str]);
[objA setStr:@"hello world!"];
NSLog([objA str]);
Это приведет к сбою, локальная переменная Foo objA не инициализирована, было бы хорошо, чтобы она была установлена на ноль, так как сообщения на нольхорошо в цели c, но это не так.
Здесь:
[objA setStr:@"hello world!"];
Этот метод выдаст предупреждение компиляции, так как этот метод не объявлен в интерфейсе, но он все равно вызовет метод.
Здесь:
- (id) init
{
return [self initWithStr:"number:" someInt:6];
}
Отсутствует @ для строки @ "number:"
Здесь:
objB = objC;
Вы только что слили objB,поскольку теперь нет действительной ссылки для освобождения предыдущего выделения.
[objA release];
Это никогда не было выделено!
[objB release];
[objC release];
Второй сбой, поскольку оба они ссылаются на один и тот же объект,и количество сохранений составляет только 1.
В первом файле также есть некоторые потенциальные проблемы, такие как объявление метода, который выглядит как метод получения, без объявления свойства для ивара, так же как и для метода установки, было бы лучшепросто объявите собственность.