黑马程序员技术交流社区

标题: 指教一下问题出哪里, OC程序 [打印本页]

作者: 山涧小草    时间: 2014-8-18 21:06
标题: 指教一下问题出哪里, OC程序
本帖最后由 山涧小草 于 2015-7-9 22:17 编辑

#import<Foundation/Foundation.h>
@interface Person : NSObject      
{
    int  _age;
    char  *_name;
}

- (void)setAge: (int)newAge;      // 成员变量_age的set的声明。
- (int)age;      // 成员变量_age的get的声明。

- (void)setName: (char *)newName;       // 成员变量_name的set的声明。
- (char *)name;        // 成员变量_name的get的声明。
@end

@implementation Person
- (void)setAge: (int)newAge
{
    _age = newAge;
}

- (int)age
{
    return _age;
}

- (void)setName: (char *)newName
{
    _name = newName;
}

- (char *)name
{
    return _name;
}
@end

void main()
{
    Person  *p = [Person new];      //创建一个Person新对象。
     [p setAge:22];      //_age的set方法的实现。
     [p setName:"Jack"];        //_name的set方法的实现。
     NSLog(@"此人为%d岁的%s!",[p age],[p name]);   
     return 0;
}

以上代码运行出错,求大神指错了。而且,关于指针变量使用不明白,希望懂的可以以该例讲解一下!!




作者: ★Joean_Zhou    时间: 2014-8-18 23:28
#import<Foundation/Foundation.h>
@interface Person : NSObject        //对象的声明。
{
    int  _age;
    char  *_name;
}

-(void)setAge: (int)newAge;      //成员变量_age的set的声明。
-(int)age;      //成员变量_age的get的声明。

//****************************************/错误1:应该是(char *)newName
//-(void)setName: (char )*newName;       //成员变量_name的set的声明。

-(void)setName: (char *)newName;

//*********************************/错误2:这里应该是-(char *)name
//-(char)name;        ////成员变量_name的get的声明。
-(char *)name;

@end

@implementation Person

-(void)setAge: (int)newAge
{
    _age = newAge;
}

-(int)age
{
    return _age;
}
//*************************************/错误3:这里应该是(char *)newName,char *是个整体,是种类型
//-(void)setName: (char )*newName
-(void)setName:(char *)newName
{
    _name = newName;
}
//*************************************/错误4:这里的类型应该是(char *)name
//-(char )name
-(char *)name
{
    //**********************************/错误5:这里返回的是_name不带*,因为*是种指针的类型,定义类型时用
   // return *_name;
    return _name;
}
@end
//**********************************/错误6:既然有返回值就用int类型,如果不想改这里就把return去掉
//void main()
int main()
{
    Person  *p = [Person new];      //创建一个Person新对象。
    [p setAge:22];      //_age的set方法的实现。

    //*********************************/错误7:set方法名打错了,应该是[p setName:"Jack"];
    //[p name:"Jack"];        //_name的set方法的实现。
    [p setName:"Jack"];
    NSLog(@"此人为%d岁的%s!",[p age],[p name]);
    return 0;
}

//注:错误已用//****/标注,都是很小的错误。。。。。。仔细一点就好啦,嘿嘿


作者: 山涧小草    时间: 2014-8-18 23:49
哥们,明白了!大恩不言谢哈!!:handshake
作者: Meniny    时间: 2014-8-19 03:21
好长,。。刚看完打算回复,发现已经解决了。。。
作者: qq541955920    时间: 2014-8-19 07:15
为什么不用property声明setget方法呢,多简单。当然要记得用synthesize
作者: ★Joean_Zhou    时间: 2014-8-19 09:06
qq541955920 发表于 2014-8-19 07:15
为什么不用property声明setget方法呢,多简单。当然要记得用synthesize

应该他还没看到那里吧。。。嘿嘿!
作者: x65396731    时间: 2014-8-19 09:35
*_name错了
作者: ❤如止水之絕境    时间: 2014-8-19 10:26
大神,-(void)setName: (char)*newName;       //成员变量_name的set的声明。中的*应写成(char*),由此后面get方法中应定义为-(char*)name;
作者: ixx__123    时间: 2014-8-19 13:36
     看看,敲敲
作者: itheimaXYP    时间: 2014-8-19 19:39
-(void)setName: (char)*newName;       //成员变量_name的set的声明。

这星号怎么在外面
作者: 山涧小草    时间: 2014-8-19 21:16
Meniny 发表于 2014-8-19 03:21
好长,。。刚看完打算回复,发现已经解决了。。。

哦哦,编辑得不太好!!本来想用代码文本编辑的,可是不会弄,哈哈
作者: 山涧小草    时间: 2014-8-19 21:18
★Joean_Zhou 发表于 2014-8-19 09:06
应该他还没看到那里吧。。。嘿嘿!

嗯嗯,还没有到这个知识点
作者: 山涧小草    时间: 2014-8-19 21:19
❤如止水之絕境 发表于 2014-8-19 10:26
大神,-(void)setName: (char)*newName;       //成员变量_name的set的声明。中的*应写成(char*),由此后 ...

收到:handshake
作者: 山涧小草    时间: 2014-8-19 21:21
x65396731 发表于 2014-8-19 09:35
*_name错了

嗯嗯,明白了
作者: 山涧小草    时间: 2014-8-19 21:22
itheimaXYP 发表于 2014-8-19 19:39
-(void)setName: (char)*newName;       //成员变量_name的set的声明。

这星号怎么在外面 ...

明白了,谢过了哈
作者: 3677065    时间: 2014-8-19 22:56
OC怎么觉得这么难
作者: 山涧小草    时间: 2014-8-19 23:12
3677065 发表于 2014-8-19 22:56
OC怎么觉得这么难

不是OC太难,是咱们功底不够……
作者: 曹雨    时间: 2014-8-20 08:50
3677065 发表于 2014-8-19 22:56
OC怎么觉得这么难

其实很简单,你只要掌握这种游戏规则就行了。C++,C是最难的。会C不怕别的。相信你加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2