I am still new in objective-c programming, I got this exception, but I don’t know what does it mean,
The exception is here, and after it there is the code ..
Running…
2011-11-02 12:10:31.923 app3[1322:a0f] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[Person<0x100001098> init]: cannot init a class object.'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff8499c7b4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff84729f03 objc_exception_throw + 45
2 CoreFoundation 0x00007fff849f5f29 +[NSObject(NSObject) init] + 137
3 app3 0x0000000100000d99 main + 124
4 app3 0x0000000100000c60 start + 52
5 ??? 0x0000000000000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
Program received signal: “SIGABRT”.
sharedlibrary apply-load-rules all
and here is the code that causes this exception , this code is only create class(interface) and makes an instance of this class tand set values ..
#import <Foundation/Foundation.h>
#import <Foundation/NSObject.h>
@interface Person:NSObject{
int age;
int weight;
}
-(void) print;
-(void) setAge:(int) a;
-(void) setWeight:(int) w;
@end
@implementation Person
-(void) print{
NSLog(@"I am %i years old and weight %i pound",age,weight);
}
-(void) setAge:(int) a{
age = a;
}
-(void) setWeight:(int)w{
weight = w;
}
@end
int main(int argc, char *argv[]){
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]init];
Person *adham;
adham = [Person alloc];
adham = [Person init];
[adham setAge:24];
[adham setWeight:68];
[adham print];
[pool release];
[pool retain];
return 0;
}
This is wrong:
alloc is a class method, init is an instance method, you should be doing this
Also, looking at your two lines at the end
why are you retaining the NSAutoreleasePool? you shouldn’t be (you should get a crash in fact). Release the pool and return.