J'ai juste un code simple pour pratiquer l'objet C .. Je ne suis pas sûr pourquoi je peux cet "AVERTISSEMENT"? Mon code est ci-dessousFil 1: Programme reçu le signal: "EXC_BAD_ACCESS"
#import <Foundation/Foundation.h>
@interface MyClass : NSObject {
@private
NSDate *mdate;
}
@property (retain) NSDate *mdate;
@end
==================================
#import "MyClass.h"
@implementation MyClass
@synthesize mdate;
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
mdate = [[NSDate date] autorelease];
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
@end
=======================================
#import <Foundation/Foundation.h>
#import "MyClass.h"
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
MyClass *mclass = [[MyClass alloc]init];
NSDate *myBirthday;
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy/MM/dd"];
myBirthday=[dateFormat dateFromString:@"1990/09/02"];
[mclass setMdate:myBirthday];
NSLog(@"My Birthday is %@",[mclass mdate]);
// insert code here...
NSLog(@"Hello, World!");
[mclass release];
//[dateFormat release];
[pool drain];
return 0;
}
et dans [drain de la piscine] -> j'ai reçu le message après avoir couru.
Je suis vraiment novice sur l'objet C. Quelqu'un pourrait-il expliquer ce que j'ai manqué? Je pense que cela cause ma gestion de la mémoire (?) btw, j'écrivais cela pour la console.
Vous n ne libère pas l'objet pool, qui est une fuite de mémoire, bien que l'application se termine directement après, il est préférable de le libérer au lieu de d il pleut. Le relâcher le drainera pour vous. –
En fait, 'drain' draine la piscine et la libère. Cette ligne de code, au moins, est correcte. – bbum