oc4--方法
// main.m // 第一个OC类-方法2 #import <Foundation/Foundation.h> // 1.编写类的声明 @interface Iphone : NSObject { @public float _model; int _cpu; double _size; int _color; } // 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;因为OC方法中的()有特殊的用途, OC方法中的()是用来扩住数据类型的 - (void)about; // 有返回值没有参数的, 读取短信 - (char *)loadMessage; // 有返回值有参数的, 打电话 // int signal(int number); // 注意: 当前这个有参数的方法它的方法名称是 signal: ,有没有冒号是2个方法,冒号也是方法名称的一部分 - (int)signal:(int)number; - (int)signal; // 有返回值并且有多个参数的, 发短信 // int sendMessage(int number, char *content); // 下面这个方法的方法名称是 sendMessage:: - (int)sendMessage:(int)number :(char *)content; // 为了提高我们的阅读性, OC方法允许我们给每个参数添加一个标签来说明当前参数的含义,注意: 标签也是方法名的一部分 // 方法名是 sendMessageWithNumber:andContent: (参数数据类型用括号括起来,参数的数据类型前面加冒号) - (int)sendMessageWithNumber:(int)number andContent:(char *)content; @end // 2.编写类的实现 @implementation Iphone // 行为的实现 - (void)about { // 对象方法中访问该对象的属性, 直接写_属性名称,因为这里没有对象, NSLog(@"型号 = %f, cpu = %i, 尺寸= %f, 颜色 = %i", _model, _cpu, _size, _color); } - (char *)loadMessage { char * content = "老婆我们家我做主"; return content; // return "wife is god"; 返回字符串是char *, } - (int)signal:(int)number { NSLog(@"打电话给%i", number); return 1; } - (int)sendMessage:(int)number :(char *)content{ return 1; } - (int)sendMessageWithNumber:(int)number andContent:(char *)content { NSLog(@"发短信给%i, 内容是%s", number, content); return 1; } @end int main(int argc, const char * argv[]) { // 1.通过类创建对象,堆中,栈中内存函数结束是释放,堆中要自己释放。p是堆中字节最小的地址。p称之为Ipone的对象。 Iphone *p = [Iphone new]; // 2.修改对象的属性 p->_size = 3.5; p->_color = 0; p->_model = 4; p->_cpu = 1; // 3.获取对象的属性 NSLog(@"size = %f, color = %i, model = %f, cpu = %i", p->_size, p->_color, p->_model, p->_cpu); // 4.如果给对象发消息(如果调用对象的方法) [p about]; // [对象 消息名称(方法名称)] // 注意: OC中的NSLog对C语言的字符串支持不是很好, 如果返回的是中文的C语言字符串可能输出的是乱码, 也有可能什么都不输出 char *content = [p loadMessage]; NSLog(@"content = %s", content); [p signal:13838338]; [p sendMessage:1383838333 :"luck"]; [p sendMessageWithNumber:123456789 andContent:"hi"]; return 0; }