黑马程序员技术交流社区
标题: 指教一下问题出哪里, 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
应该他还没看到那里吧。。。嘿嘿!
作者: 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
哦哦,编辑得不太好!!本来想用代码文本编辑的,可是不会弄,哈哈
作者: 山涧小草 时间: 2014-8-19 21:18
嗯嗯,还没有到这个知识点
作者: 山涧小草 时间: 2014-8-19 21:19
收到:handshake
作者: 山涧小草 时间: 2014-8-19 21:21
嗯嗯,明白了
作者: 山涧小草 时间: 2014-8-19 21:22
明白了,谢过了哈
作者: 3677065 时间: 2014-8-19 22:56
OC怎么觉得这么难
作者: 山涧小草 时间: 2014-8-19 23:12
不是OC太难,是咱们功底不够……
作者: 曹雨 时间: 2014-8-20 08:50
其实很简单,你只要掌握这种游戏规则就行了。C++,C是最难的。会C不怕别的。相信你加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |