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关键字的更多相关文章

  1. CoreData教程

    网上关于CoreData的教程能搜到不少,但很多都是点到即止,真正实用的部分都没有讲到,而基本不需要的地方又讲了太多,所以我打算根据我的使用情况写这么一篇实用教程.内容将包括:创建entity.创建r ...

  2. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  3. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  4. Objective C ARC 使用及原理

    手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档过程中的疑问和答案写下来.下面有些是翻译,但 ...

  5. Objective -C学习笔记之字典

    //字典:(关键字 值) // NSArray *array = [NSArray array];//空数组 // NSDictionary *dictionary = [NSDictionary d ...

  6. Objective - C中属性和点语法的使用

    一.属性        属性是Objective—C 2.0定义的语法,为实例变量提供了setter.getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问安全性         ...

  7. Qt for iOS,Qt 与Objective C混合编程

    项目设置 既然要聊 Qt 混合 OC 编程,首先要简单介绍一下 Objective C .我只有一句话:Go,问搜索引擎去.因为我所知实在有限,怕误导了您.当然如果您不怕,往下看吧. OC源文件介绍 ...

  8. iOS开发——新特性OC篇&Objective新特性

    Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...

  9. Objective中的协议(Protocol)

    Objective中的协议(Protocol) 作用: 专门用来声明一大堆方法. (不能声明属性,也不能实现方法,只能用来写方法的声明). 只要某个类遵守了这个协议.就相当于拥有这个协议中的所有的方法 ...

  10. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象

    1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...

随机推荐

  1. SVN 首次用TortoiseSVN Checkout 提示Unexpected HTTP status 405

    权限错误 首次使用 因为没有 弹出 用户名密码输入框 无法输入 帐户信息. 解决办法: 点击 仓库地址输入栏 右边 的...按钮 此时弹出的输入框浏览器方式访问的.输入用户名和密码,然后在左侧出来的仓 ...

  2. Visual Studio 2015 预览版 - 支持跨平台开发Android/iOS应用程序(内置安卓模拟器)

    微软最近的惊人举动真多,对普通消费者Office 移动版宣布免费,对开发者也发布了完全免费的 VS2013 社区版! 不仅如此,就连 .Net 开发框架环境也竟然「开源」并且跨平台支持 Mac 及 L ...

  3. Browser GetImage

    using Microsoft.Win32; using System; using System.ComponentModel; using System.Drawing; using System ...

  4. php的预定义数组

    PHP预定义变量数组 1.$_SERVER 变量由Web服务器设定或者直接与当前的脚本的执行环境相关联 $_SERVER超级全局变量包含由web服务器创建的信息,它提供了服务器和客户配置及当前请求环境 ...

  5. Emacs和Ultra Edit列编辑模式

    在emacs中可以使用C-r系列组合键进行区域选择编辑,或者使用emacs自带的cua-mode,然后键入C-ret进行可视化列编辑. 使用Ultra Edit同样可以方便的进入列编辑模式,只需要按下 ...

  6. 用云存储和CDN轻松搞定网站图片

    http://www.kuqin.com/web/20120207/317912.html

  7. 利用phpmyadmin设置mysql主从同步(或者备份)

    一.实现同步的原理: 在主数据库与 从数据库 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 从数据库 端,另外一个线程(IO线程)在 主数据库 端. 注意: 1. ...

  8. Nginx工作原理和优化

    转自:http://blog.csdn.net/hguisu/article/details/8930668 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过 ...

  9. SecureCRT相关

    -------------------------------------------------- 如何解决SecureCRT汉字乱码的问题? 选择工具栏上的“选项”菜单在打开的下拉菜单中选择“会话 ...

  10. KSM剖析——Linux 内核中的内存去耦合

    简介: 作为一个系统管理程序(hypervisor),Linux® 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging)  允许这个系统管理程序通 ...