Shapes-Object
新建工程,名为: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相关推荐
- Class类和Object类及用法(一)
Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI. 这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确 ...
- 夯实Java基础系列9:深入理解Class类和Object类
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- python代码没有错误却无法运行的原因-Python shell没有显示错误,但程序没有运行...
我写了这个程序来学习OOP的基础知识.当我在Python Shell中从IDLE运行这个程序时,它没有显示任何错误但也没有打印任何东西......我不知道如何去弄清楚我的错误是什么. 这是我的代码:c ...
- java 泛化_Java语言class类用法及泛化(详解)
这篇文章主要介绍了Java语言class类用法及泛化(详解),大家都知道Java程序在运行过程中,对所有的对象进行类型标识,也就是RTTI.这项信息记录了每个对象所属的类.虚拟机通常使用运行时类型信息 ...
- C语言socket重连和心跳,c# socket 心跳 重连
/// /// 检查一个Socket是否可连接 /// /// /// private bool IsConnected(Socket socket) { if (socket == null || ...
- Scala 简介 [摘自 Scala程序设计 ]
Scala 简介 1.1 为什么选择Scala Scala 是一门满足现代软件工程师需求的语言:它是一门静态类型语言,支持混合范式:它也是一门运行在 JVM 之上的语言,语法简洁.优雅.灵活.Scal ...
- 《Python核心编程(第3版)》学习笔记及书评
<Python核心编程(第3版)>学习笔记 文章目录 <Python核心编程(第3版)>学习笔记 写在前面 1. 正则表达式 1.1 常用语法 1.2 re模块 2. 网络编程 ...
- 3d效果之旋转的球形
引入以下js可直接运行. <script src="js/three.min.js"></script> <script src="js/t ...
- json文件转TXT文件
语义分割数据集转YOLOv5数据集 json文件 转txt文件 import json import os import os.path''' 获取图片名称 ''' def image_id(root ...
- 【论文阅读】【3d目标检测】Behind the Curtain: Learning Occluded Shapes for 3D Object Detection
论文标题:Behind the Curtain: Learning Occluded Shapes for 3D Object Detection AAAI2022 南加大 这篇文章的主题思想是认为现 ...
最新文章
- android 相册 uri空,android拍照获得图片URI为空的处理方法
- 二逼平横树——线段树套平衡树
- [轉]VS2010 UML类图生成代码
- python导入自己写的模块_Python:包、模块和导入
- java netty和dubbo_Dubbo与Netty杂谈
- MySQL存储过程 游标
- css -- 背景图片自适应屏幕大小
- ae万能弹性表达式_18种常用AE表达式解析【建议收藏】
- 安装部署Apache Doris集群
- Java爬取彼岸桌面壁纸的实现(使用Jsoup)
- HTML中的空格、Tab、书名号大于号以及常用特殊符号
- pytorch采用GPU加速方法
- 英菲克I9_H8_当贝纯净桌面-YYF定制-线刷固件包
- 诺基亚智能手机内存不足等问题的解决
- BUUCTF 2021-10-4 Pwn
- excel表格怎么调整行高和列宽_Excel 表格技巧—一键调整行高列宽的方法
- 阿里矢量图标(字体图标)使用
- 在线测试视频地址(flv,m3u8,rtsp)
- 植物大战僵尸2 服务器维护时间,植物大战僵尸2:老玩家给平民党的7点忠告,不氪金也能玩到通关!...
- Tkinter 布局管理器(一):pack