新建工程,名为:Shapes-Object,修改代码如下:

//
//  main.m
//  Shapes-Object
//
//  Created by cloud on 13-3-7.
//  Copyright (c) 2013年 cloud. All rights reserved.
//#import <Foundation/Foundation.h>typedef enum {kRedColor,kGreenColor,kBlueColor
} ShapeColor;typedef struct {int x,y,width,height;
} ShapeRect;NSString *colorName(ShapeColor color)
{switch (color) {case kRedColor:return @"red";break;case kGreenColor:return @"green";break;case kBlueColor:return @"blue";break;default:return @"no clue";break;}
}@interface Circle : NSObject
{ShapeColor fillColor;ShapeRect   bounds;
}- (void) setFillColor:(ShapeColor) fillColor;
- (void) setBounds:(ShapeRect) bounds;
- (void) draw;@end@implementation Circle-(void) setFillColor:(ShapeColor)c
{fillColor=c;
}-(void) setBounds:(ShapeRect)b
{bounds=b;
}-(void) draw
{NSLog(@"drawing a circle at(%d %d %d %d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));
}
@end@interface Rectangle : NSObject
{ShapeColor fillColor;ShapeRect   bounds;
}- (void) setFillColor:(ShapeColor) fillColor;
- (void) setBounds:(ShapeRect) bounds;
- (void) draw;@end@implementation Rectangle-(void) setFillColor:(ShapeColor)c
{fillColor=c;
}-(void) setBounds:(ShapeRect)b
{bounds=b;
}-(void) draw
{NSLog(@"drawing a rectangle at(%d %d %d %d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));
}
@end@interface OblateSphereoid : NSObject
{ShapeColor fillColor;ShapeRect   bounds;
}- (void) setFillColor:(ShapeColor) fillColor;
- (void) setBounds:(ShapeRect) bounds;
- (void) draw;@end@implementation OblateSphereoid-(void) setFillColor:(ShapeColor)c
{fillColor=c;
}-(void) setBounds:(ShapeRect)b
{bounds=b;
}-(void) draw
{NSLog(@"drawing an egg at(%d %d %d %d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));
}
@endvoid drawShapes(id shapes[],int count)
{int i;for(i=0;i<count;i++){id shape= shapes[i];[shape draw];}
}int main(int argc, const char * argv[])
{//@autoreleasepool {id shapes[3];ShapeRect rect0={0,0,10,30};shapes[0]=[Circle new];    [shapes[0] setBounds:rect0];[shapes[0] setFillColor:kRedColor];ShapeRect rect1={30,40,50,60};shapes[1]=[Rectangle new];[shapes[1] setBounds:rect1];[shapes[1] setFillColor:kGreenColor];ShapeRect rect2={15,19,37,29};shapes[2]=[OblateSphereoid new];[shapes[2] setBounds:rect2];[shapes[2] setFillColor:kBlueColor];drawShapes(shapes, 3);// }return 0;
}

运行,结果如下:

如果编译报错,Worning:Must explicitly describe intended ownership of an object array parameter

需要禁用ARC

Project  -> Apple LLVM compiler 3.1 - Language -> Objective-C Automatic Referencing Counting, 设置为NO即可

Objective-C 类的声明和实现,引用与C++很不一样。

@interface 类名:父类

{

变量类型    成员变量;

}

- (返回值)函数名:(参数类型)参数

@end

@implementation 类名

- (返回值)函数名:(参数类型)参数

{

函数实现

}

@end

引用

类名 c=[类名 new]

[c 成员函数:参数]

Shapes-Object相关推荐

  1. Class类和Object类及用法(一)

    Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI. 这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确 ...

  2. 夯实Java基础系列9:深入理解Class类和Object类

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  3. python代码没有错误却无法运行的原因-Python shell没有显示错误,但程序没有运行...

    我写了这个程序来学习OOP的基础知识.当我在Python Shell中从IDLE运行这个程序时,它没有显示任何错误但也没有打印任何东西......我不知道如何去弄清楚我的错误是什么. 这是我的代码:c ...

  4. java 泛化_Java语言class类用法及泛化(详解)

    这篇文章主要介绍了Java语言class类用法及泛化(详解),大家都知道Java程序在运行过程中,对所有的对象进行类型标识,也就是RTTI.这项信息记录了每个对象所属的类.虚拟机通常使用运行时类型信息 ...

  5. C语言socket重连和心跳,c# socket 心跳 重连

    /// /// 检查一个Socket是否可连接 /// /// /// private bool IsConnected(Socket socket) { if (socket == null || ...

  6. Scala 简介 [摘自 Scala程序设计 ]

    Scala 简介 1.1 为什么选择Scala Scala 是一门满足现代软件工程师需求的语言:它是一门静态类型语言,支持混合范式:它也是一门运行在 JVM 之上的语言,语法简洁.优雅.灵活.Scal ...

  7. 《Python核心编程(第3版)》学习笔记及书评

    <Python核心编程(第3版)>学习笔记 文章目录 <Python核心编程(第3版)>学习笔记 写在前面 1. 正则表达式 1.1 常用语法 1.2 re模块 2. 网络编程 ...

  8. 3d效果之旋转的球形

    引入以下js可直接运行. <script src="js/three.min.js"></script> <script src="js/t ...

  9. json文件转TXT文件

    语义分割数据集转YOLOv5数据集 json文件 转txt文件 import json import os import os.path''' 获取图片名称 ''' def image_id(root ...

  10. 【论文阅读】【3d目标检测】Behind the Curtain: Learning Occluded Shapes for 3D Object Detection

    论文标题:Behind the Curtain: Learning Occluded Shapes for 3D Object Detection AAAI2022 南加大 这篇文章的主题思想是认为现 ...

最新文章

  1. android 相册 uri空,android拍照获得图片URI为空的处理方法
  2. 二逼平横树——线段树套平衡树
  3. [轉]VS2010 UML类图生成代码
  4. python导入自己写的模块_Python:包、模块和导入
  5. java netty和dubbo_Dubbo与Netty杂谈
  6. MySQL存储过程 游标
  7. css -- 背景图片自适应屏幕大小
  8. ae万能弹性表达式_18种常用AE表达式解析【建议收藏】
  9. 安装部署Apache Doris集群
  10. Java爬取彼岸桌面壁纸的实现(使用Jsoup)
  11. HTML中的空格、Tab、书名号大于号以及常用特殊符号
  12. pytorch采用GPU加速方法
  13. 英菲克I9_H8_当贝纯净桌面-YYF定制-线刷固件包
  14. 诺基亚智能手机内存不足等问题的解决
  15. BUUCTF 2021-10-4 Pwn
  16. excel表格怎么调整行高和列宽_Excel 表格技巧—一键调整行高列宽的方法
  17. 阿里矢量图标(字体图标)使用
  18. 在线测试视频地址(flv,m3u8,rtsp)
  19. 植物大战僵尸2 服务器维护时间,植物大战僵尸2:老玩家给平民党的7点忠告,不氪金也能玩到通关!...
  20. Tkinter 布局管理器(一):pack

热门文章

  1. 谁生活在地狱,自己心里都有数 ---Leo读 不是孙振耀写的职场感言 3
  2. vim显示行号的设置方法
  3. IE 下JS上传文件时出现“拒绝访问”的解决方案
  4. 166、锐捷交换机如何配置?一步步详解,交换机配置再也不难了
  5. 一个二维求三点一线算法
  6. 达芬奇发明计算机读后感200,三年级读后感:读《达芬奇》有感200字
  7. 宗镜录略讲——南怀瑾老师——系列1
  8. Oxygen Eclipse 添加server
  9. linux 破壳漏洞,Bash破壳漏洞
  10. 夏培肃完成了第一台电子计算机运算器,,学生支部述职报告2017