【发布时间】:2012-01-12 22:14:27
【问题描述】:
我正在学习目标 C
我有以下问题。
如果我使用 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;
}
就像它不识别超类'super'或不识别 消息“初始化”。
无法识别消息“alloc”和“free”。
这是所有消息
n 框架 GNU\Saludar.m||在函数 '-[Saludar init]' 中:| n 框架 GNU\Saludar.m|11|警告:“对象”可能不响应“-init”[启用 默认]| n 框架 GNU\Saludar.m|11|警告:(没有 匹配方法签名[默认启用]| n 框架 GNU\Saludar.m|11|warning: 将假定返回 'id' 并接受 [默认启用]| n 框架 GNU\Saludar.m|11|warning: '...' as 参数。)[默认启用]| n 框架 GNU\Clase02a.m||In 功能'主要':| n 框架 GNU\Clase02a.m|8|警告:“Saludar”可能 不响应'+alloc' [默认启用]| n 框架 GNU\Clase02a.m|18|警告:“Saludar”可能不会响应“-free” [默认启用]| ||=== 构建完成:0 个错误,6 个警告 ===|
程序运行,但不显示消息,不工作。
【问题讨论】: