objective-c new关键字
xxx *a = [xxx new] 等价于 xxx *a = [[xxx alloc]init] ,但如果类的构造函数带参数就不能使用new了。
练习了下《Objective-C 基础教程》第3章代码。
Share.h 头文件
//
// Share.h
// SharesDemo01
//
// Created by apple on 13-7-15.
// Copyright (c) 2013年 FDStudio. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef enum{
KCircle,
KRectangle,
KOblateSpheroid
} ShareType;
typedef enum{
KRedColor,
KGreenColor,
KBlueColor
} ShareColor;
typedef struct{
int x,y,width,height;
} ShareRect;
@interface Share : NSObject{
ShareColor fillColor;
ShareRect bounds;
}
-(void)setFillColor:(ShareColor)c;
-(void)setBounds:(ShareRect)rect;
-(NSString *) ColorName:(ShareColor) c;
-(void)draw;
@end //Share
@interface Circle : Share
@end //Circle
@interface Rectangle : Share
@end //Rectangle
Share.m 实现文件
//
// Share.m
// SharesDemo01
//
// Created by apple on 13-7-15.
// Copyright (c) 2013年 FDStudio. All rights reserved.
//
#import "Share.h"
@implementation Share
-(void)setFillColor:(ShareColor)c{
fillColor = c;
} //setFillColor
-(void)setBounds:(ShareRect)rect{
bounds = rect;
} //setBounds
-(NSString *)ColorName:(ShareColor)c{
switch (c) {
case KRedColor:
return @"red";
break;
case KBlueColor:
return @"blue";
break;
case KGreenColor:
return @"green";
break;
}
return @"no clue";
}
-(void)draw{
} //draw
@end //Share
@implementation Circle
-(void)draw{
NSLog(@"drawing a circle at (%d %d %d %d) in %@", bounds.x, bounds.y,bounds.width,bounds.height, [self ColorName:fillColor]);
}
@end //Circel
@implementation Rectangle
-(void)draw{
NSLog(@"drawing a Rectangle at (%d %d %d %d) in %@", bounds.x, bounds.y,bounds.width,bounds.height, [self ColorName:fillColor]);
}
@end
main.m 主文件
//
// main.m
// SharesDemo01
//
// Created by apple on 13-7-15.
// Copyright (c) 2013年 FDStudio. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "share.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
id shares[2];
ShareRect rect0 = {0,0,10,30};
shares[0] = [Circle new];
[shares[0] setBounds:rect0];
[shares[0] setFillColor:KRedColor];
ShareRect rect1 = {30,40,50,60};
shares[1] = [Rectangle new];
[shares[1] setBounds:rect1];
[shares[1] setFillColor:KBlueColor];
for(int i=0; i<2; i++){
[shares[i] draw];
}
}
return 0;
}
objective-c new关键字的更多相关文章
- CoreData教程
网上关于CoreData的教程能搜到不少,但很多都是点到即止,真正实用的部分都没有讲到,而基本不需要的地方又讲了太多,所以我打算根据我的使用情况写这么一篇实用教程.内容将包括:创建entity.创建r ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- 作为一个新手的Oracle(DBA)学习笔记【转】
一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...
- Objective C ARC 使用及原理
手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档过程中的疑问和答案写下来.下面有些是翻译,但 ...
- Objective -C学习笔记之字典
//字典:(关键字 值) // NSArray *array = [NSArray array];//空数组 // NSDictionary *dictionary = [NSDictionary d ...
- Objective - C中属性和点语法的使用
一.属性 属性是Objective—C 2.0定义的语法,为实例变量提供了setter.getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问安全性 ...
- Qt for iOS,Qt 与Objective C混合编程
项目设置 既然要聊 Qt 混合 OC 编程,首先要简单介绍一下 Objective C .我只有一句话:Go,问搜索引擎去.因为我所知实在有限,怕误导了您.当然如果您不怕,往下看吧. OC源文件介绍 ...
- iOS开发——新特性OC篇&Objective新特性
Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...
- Objective中的协议(Protocol)
Objective中的协议(Protocol) 作用: 专门用来声明一大堆方法. (不能声明属性,也不能实现方法,只能用来写方法的声明). 只要某个类遵守了这个协议.就相当于拥有这个协议中的所有的方法 ...
- iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象
1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...
随机推荐
- Controller方法的返回值
方法的返回值1.ModelAndView这个就不多说,这是最基础的,前面定义一个ModelAndView,中途使用addObject方法添加属性,再返回.视图解析器会自动扫描到的.2.String这个 ...
- 标签工作区(navtab)
B-JUI使用标签可以加载其他页面的数据 B-JUI框架的整个工作区部分就是一个navtab组件,本页面位于"#bjui-container"容器内,固定的html结构如下: &l ...
- 图解Nosql(hbase)与传统数据库的区别
图解Nosql(hbase)与传统数据库的区别http://www.aboutyun.com/thread-7804-1-1.html(出处: about云开发) 问题导读:1.nosql数据库能否删 ...
- 《day15---多线程安全问题_JDK1.5的锁机制》
//15同步问题的分析案例以及解决思路 //两个客户到一个银行去存钱,每个客户一次存100,存3次. //问题,该程序是否有安全问题,如果有,写出分析过程,并定于解决方案. /* 发现运行结果: su ...
- hdu1116 欧拉回路
//Accepted 248 KB 125 ms //欧拉回路 //以26个字母为定点,一个单词为从首字母到末尾字母的一条边 //下面就是有向图判断欧拉回路 //连通+节点入度和==出度和 或者 存在 ...
- OpenSesame:一个能够攻击fixed-pin设备的工具
OpenSesame是一种设备,这种设备可以通过无线技术来打开任何一个设有固定密码的车库门,我从中发现了一个攻击无线固定pin码设备的新方法. 演示视频以及详细信息: opensesame源代码:ht ...
- ACE - Ubuntu下环境搭建
之前写了很多linux下的底层网络API的demo,这些demo可用于了解底层的网络通信过程,但是想做出好的服务器用于实际业务还是非常困难的,需要大量的代码实现,移植性也非常差,想要写出高性能架构的服 ...
- 使用inno setup打包程序完整脚本(.net框架检测,重复安装检测)
; 脚本由 Inno Setup 脚本向导 生成!; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "小小鸟软件"#def ...
- 【转】BAT及各大互联网公司2014前端笔试面试题:JavaScript篇
原文转自:http://blog.jobbole.com/78738/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是 ...
- 在magneto系统中输出tier price的最小值
2012年6月16日星期六 Asia/Shanghai上午11时39分22秒 有的时候,我们想输出产品的tier price 的最小值!如图: 下面是解决的办法: 1. 在catalog/produc ...