我在学习Objective Csuper init不能与object.h一起工作
我有以下的麻烦。
如果我使用libretto NSObject,我的程序工作正常, 但如果我更改为使用库Object.h, 程序不起作用。
的代码是:
//-------------------------------------------------------------
/* Saludar.h */
//-------------------------------------------------------------
#import <objc/Object.h>
@interface Saludar : Object
{
char* strSaludo;
}
- (id)init;
- (void)setSaludo:(char*)sSaludo;
- (void)setSaludo:(char*)sSaludo y:(char*)sMensaje;
- (void)subSaludar;
@end
// ---------------------------------------------------------------
// Saludar.m
// ---------------------------------------------------------------
#import "Saludar.h"
#import <stdio.h>
#import <stdlib.h>
#import <string.h>
@implementation Saludar
- (id)init
{
if (self = [super init])
{
strSaludo = "Programando en Objective-C";
}
return self;
}
- (void)setSaludo:(char*)sSaludo
{
strSaludo = sSaludo;
}
- (void)setSaludo:(char*)sSaludo y:(char*)sMensaje
{
// Reserva memoria para el Mensaje
strSaludo = malloc(strlen(sSaludo)+strlen(sMensaje)+1);
// Copia el Saludo y el Mensaje
strcpy(strSaludo,sSaludo);
strcat(strSaludo,sMensaje);
}
- (void)subSaludar
{
// Desplliega el Saludo
printf("%s\n",strSaludo);
}
@end
//--------------------------------------------------------
// Clase01.m
//--------------------------------------------------------
#import "Saludar.m"
int main()
{
//printf("Entra al Programa\n");
Saludar* s = [[Saludar alloc] init];
//printf("Va a Saludar\n");
[s subSaludar];
[s setSaludo:"Hola Jaor"];
[s subSaludar];
[s setSaludo:"Hola Jaor " y:"Long Live to Programming"];
[s subSaludar];
[s free];
return EXIT_SUCCESS;
}
这就像不承认超类的“超级”,或无法识别 消息“初始化”。
无法识别'alloc'和'free'消息。
这是所有消息
Ñ框架GNU \ Saludar.m ||在函数 ' - [Saludar INIT]':| n Framework GNU \ Saludar.m | 11 |警告:'对象'可能不会响应'-init'[默认启用 ] | n框架GNU \ Saludar.m | 11 |警告:(消息没有 匹配方法签名[默认启用] | n Framework GNU \ Saludar.m | 11 |警告:将假定返回'id'并接受 [默认情况下启用] | n Framework GNU \ Saludar.m | 11 |警告:'...'为 参数。 n Framework GNU \ Clase02a.m ||在 函数'main':| n Framework GNU \ Clase02a.m | 8 |警告:'Saludar'可能不会对'+ alloc'作出响应[默认启用] | n Framework GNU \ Clase02a.m | 18 |警告:'Saludar'可能不会响应'-free' [默认启用] | || ===构建完成:0个错误,6个警告=== |
该程序运行,但不显示消息,不起作用。
他没有做新的开发,他试图找出Object发生了什么。 =/ –
我相信问题实际上是他不知道'NSObject'与'Object'是不同的。他不应该使用“对象”,因为它是不完整的/不赞成使用的,因此会出现类似的问题。 –
也许你是对的。不意味着难看。只是认为关于Object/NSObject的更多解释会有所帮助。 –