S.h
#import <Foundation/Foundation.h> /** 解决方案: 1.不用@public修饰 2.我们对象有访问和设置成员变量的两种操作 1>设置值 p->age = 10; 2>访问值 NSLog(@"%d",p->age); 现在要提供两个方法来进行设置值和访问值 1>设置成员变量 约定的格式: - (void)set成员变量名(去掉下划线,首字母大写):(成员变量数据类型)成员变量名(去掉下划线); - (void)setAge:(int)age; 2>访问成员变量 约定的格式: - (成员变量数据类型)成员变量名(去掉下划线); - (int)age; */ //.h文件时暴露在外面的,.m文件是隐藏的。 @interface Student : NSObject { int _age; // 年龄,成员变量又下划线,局部变量没有下划线。 NSString *_name; //名字 } // 提供年龄的设置和访问的方法 - (void)setAge:(int)age; - (int)age; // 设置和访问名字的方法 - (void)setName:(NSString *)name; - (NSString *)name; @end
S.m
#import "Student.h" @implementation Student // 提供年龄的设置和访问的方法 - (void)setAge:(int)age { if (age > 0 && age < 120) { _age = age; }else{ // age = 20; _age = 20; } } - (int)age { return _age; } // 设置和访问名字的方法 // 比较两个字符串是否相同 - (BOOL)isEqualToString:(NSString *)aString; - (void)setName:(NSString *)name { if ([name length] > 2) { if ([name isEqualToString:@"D大调"] ||[name isEqualToString:@"D大调方法"]) { _name = @"佚名"; }else{ _name = name; } } else { NSLog(@"请重新输入!"); } } - (NSString *)name { return _name; } @end