#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int _height; } -(id)initWithAge:(int)age andHeight:(int)height; // 自定义的构造方法,是一个动态方法 - (void)showInfo; @end @implementation Person // 实现自定义的构造方法 -(id)initWithAge:(int)age andHeight:(int)height { //先从父类那初始化 固定模板 self = [super init]; if(self !=nil){ _age = age; _height = height; } return self; } -(void) showInfo{ NSLog(@"name is %d and age is %d",_age, _height); } @end #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // Person *person = [[Person alloc]init]; //person.age = 20; //person.height = 50; Person *person =[[Person alloc]initWithAge:20 andHeight:180]; [person showInfo]; NSLog(@"age = d% height = d%",person.age , person.height); // 为什么这行会报错啊? } return 0; }
NSLog(@”age = d% height = d%”,person.age , person.height); // 为什么这行会报错啊? 说没有定义age height
所以本人后来想了一个办法就是申明一个 showinfo 的方法来调用输出结果
一直还没搞明白为什么? 有好心人帮忙解释一下吗?
解决方案
10
OC中的点语法其实访问属性 getXXX, setXXX的简易用法,题主的代码中显示是没有的,当然报错了。
假如要定义属性,也是有简易的语法可用如下,在 .h 文件中的类定义中加入
假如要定义属性,也是有简易的语法可用如下,在 .h 文件中的类定义中加入
@property int age;
5
你只是定义的是Protected域的两个变量,但是没有定义访问的方法,所以不可访问;
正确答案,参照上面其他人的回复~
正确答案,参照上面其他人的回复~
5
你定义的只能在类的内部使用,参考上面的人的回复,定义为property属性的变量