Hi all! I seem to have found the problem.the problem is that the user-defined
class is not working properly, see the following code and its output message
please.Does anyone know how to fix this?
|
#import <Foundation/Foundation.h>
@interface SayHello : NSObject
- (void)greet;
@end
@implementation SayHello
- (void)greet {
NSLog(@"Hello GnuStep");
}
@end
int main(int argc, char *argv[]) {
NSLog(@"arrayCls = %@", objc_getClass("NSArray")); // Yes
NSLog(@"stringCls = %@", objc_getClass("NSString")); // Yes
//! NSLog(@"userCls = %@", [SayHello class]); -- crash here!
NSLog(@"userCls = %@", objc_getClass("SayHello")); // null
NSArray *nameList = [NSArray arrayWithObjects:
@"Scott", @"Jesse", @"Gaia",
nil
];
NSLog(@"nameList = %@", nameList); // good
NSArray *nameList2 = [[NSArray alloc] init];
NSLog(@"nameList2 = %@", nameList2); // Ok
SayHello *userObj = [[SayHello alloc] init]; // crash here!
NSLog(@"userObj = %@", userObj);
return 0;
}
|
|
2023-07-16 21:02:02.665 abc[2996:4992] arrayCls = NSArray
2023-07-16 21:02:02.665 abc[2996:4992] stringCls = NSString
2023-07-16 21:02:02.665 abc[2996:4992] userCls = (null)
2023-07-16 21:02:02.665 abc[2996:4992] nameList = (Scott, Jesse, Gaia)
2023-07-16 21:02:02.665 abc[2996:4992] nameList2 = ()
|
|
Process 2380 stopped
* thread #1, stop reason = Exception 0xc0000005 encountered at address
0x7ffb73b91048: Access violation reading locatio
n 0x00000000
frame #0: 0x00007ffb73b91048 objc.dll`objc_msgSend + 40
objc.dll`objc_msgSend:
-> 0x7ffb73b91048 <+40>: movl (%r10), %r11d
0x7ffb73b9104b <+43>: cmpl $0x8, %r11d
0x7ffb73b9104f <+47>: je 0x7ffb73b91063 ; <+67>
0x7ffb73b91051 <+49>: cmpl $0x0, %r11d
|
Thank you!