следующая ошибка возникает во время выполнения при ручном выделении и освобождении памяти:
objc[10430]: Object 0x109014b60 of class __NSCFData autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool() to debug
Я искал в интернете, но обычно эти ошибки вызваны не освобождением памяти или использованием автоматически выпущенных сокращений ... Я не могу найтиЛюбая неизданная память, и при этом я не использую автоматически выпущенную стенографию ... Надеюсь, вы можете помочь!
Мой код:
#import "try.h"
@implementation try
- (try*)initWithSwing
{
self = [super init];
if (self) {
[self tellAboutSwing:YES];
}
return self;
}
- (void) tellAboutSwing: (BOOL) swing {
NSString *s = [[NSString alloc] initWithFormat: @"%@ %@", @"Do we have a swing on our playground?", (swing ? @"Yes" : @"No")];
// cast to a char
const char *c = [s UTF8String];
[s release];
printf("%s", c);
}
- (void) dealloc {
printf( "Deallocing Playground\n" );
[super dealloc];
}
int main(void) {
try *t;
t = [[try alloc] initWithSwing];
[t release];
}
@end
Помещение пула автоматического выпуска в метод экземпляра решает проблему,но это не должно быть необходимо с NSString alloc
.Хотя я новичок в Objective-C, я думаю, что понял концепцию владения и освобождения переменных, но у меня возникают трудности с поиском моей ошибки здесь.
Вот мой файл .h:
#include <Foundation/Foundation.h>
@interface try : NSObject
- (void) tellAboutSwing: (BOOL) swing;
@end
Помощь будет принята с благодарностью:)
С уважением,
Роберт