Object-C-经典入门教程-修正版

来源:网络收集 打印文章内容   下载WORD版到本地  

Object-C 入门教程 大纲 开始吧下载这篇教学 设定环境 前言 编译 hello world 创建 Classes@interface @implementation 把它们凑在一起 详细说明...多重参数 建构子(Constructors) 访问权限 Class level access 异常情况(Exceptions)处理 继承、多型(Inheritance, Polymorphism)以及其他面向对象功 能 id 型别 o 继承(Inheritance) o 动态识别(Dynamic types) o Categories o Posing o Protocols o 内存管理 Retain and Release(保留与释放) o Dealloc o Autorelease Pool o Foundation Framework ClassesNSArray o NSDictionary 优点与缺点 更多信息 o o o o o o o o o o o o o  

开始吧 下载这篇教学 所有这篇初学者指南的原始码都可以由 objc.tar.gz 下 载。

这篇教学中的许多范例都是由 Steve Kochan 在 Programming in Objective-C. 一书中撰写。

如果你想得到更 多详细信息及范例,请直接参考该书。

这个网站上登载的所有 范例皆经过他的允许,所以请勿复制转载。

 设定环境 Linux/FreeBSD: 安装 GNUStep 为了编译 GNUstep 应用程序,必须先执行位于 /usr/GNUstep/System/Makefiles/GNUstep.sh 的 GNUstep.sh 这个档案。

这个路径取决于你的系统环境, 有些是在 /usr, some /usr/lib,有些是/usr/local。

如果你的 shell 是以 csh/tcsh 为基础的 shell, 则应 该改用 GNUStep.csh。

建议把这个指令放在 .bashrc 或 .cshrc 中。

 Mac OS X: 安装 XCode  Windows NT 5.X: 安装 cygwin 或 mingw,然后安装 GNUStep  前言 这篇教学假设你已经有一些基本的 C 语言知识, 包括 C 数 据型别、什么是函式、什么是回传值、关于指针的知识以及基 本的 C 语言内存管理。

如果您没有这些背景知识,我非常建议 你读一读 K&R 的书:The C Programming Language (译注:台 湾出版书名为 C 程序语言第二版)这是 C 语言的设计者所写 的书。

 Objective-C,是 C 的衍生语言,继承了所有 C 语言的特 性。

是有一些例外,但是它们不是继承于 C 的语言特性本身。

 nil:在 C/C++ 你或许曾使用过 NULL,而在 Objective-C 中则是 nil。

不同之处是你可以传递讯息给 nil(例如 [nil message];) ,这是完全合法的,然而你却不能对 NULL 如法炮 制。

 BOOL:C 没有正式的布尔型别,而在 Objective-C 中也不 是「真的」有。

它是包含在 Foundation classes(基本类别库) 中(即 import NSObject.h;nil 也是包括在这个头文件内) 。

BOOL 在 Objective-C 中有两种型态: YES 或 NO, 而不是 TRUE 或 FALSE。

 #import vs #include:就如同你在 hello world 范例中看 到的,我们使用了#import。

#import 由 gcc 编译程序支援。

我并不建议使用 #include,#import 基本上跟 .h 档头尾的 

#ifndef #define #endif 相同。

许多程序员们都同意,使用这 些东西这是十分愚蠢的。

无论如何,使用 #import 就对了。

这 样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会 有足够的 Objective-C 程序员可以坚持保留它或是将它放回 来。

偷偷告诉你,Apple 在它们官方的程序代码中也使用了 #import。

所以万一有一天这种事真的发生, 不难预料 Apple 将 会一个支持 #import 的 gcc 分支版本。

 在 Objective-C 中, method 及 message 这两个字是可以 互换的。

不过 messages 拥有特别的特性,一个 message 可以 动态的转送给另一个对象。

在 Objective-C 中,呼叫对象上的 一个讯息并不一定表示对象真的会实作这个讯息,而是对象知 道如何以某种方式去实作它, 或是转送给知道如何实作的对象。

编译 hello world hello.m  #import   int main( int argc, const char *argv[] ) {  printf( "hello world/n" );  return 0; }   o   o   输出 hello world 在 Objective-C 中使用 #import 代替 #include Objective-C 的预设扩展名是 .m 创建 classes @interface 基于 "Programming in Objective-C," Copyright © 2004 by Sams Publishing 一书中的范例,并经过允许而刊载。

 Fraction.h  #import   @interface Fraction: NSObject {  int numerator;  int denominator;  }         -(void) print; -(void) setNumerator: (int) d; -(void) setDenominator: (int) d; -(int) numerator; -(int) denominator; @end  o NSObject:NeXTStep Object 的缩写。

因为它已经改名为 OpenStep,所以这在今天已经不是那么有意义了。

 继承(inheritance)以 Class: Parent 表示,就像上面的 Fraction: NSObject。

 夹在 @interface Class: Parent { .... } 中的称为 

instance variables。

 没有设定访问权限(protected, public, private)时,预 设的访问权限为 protected。

设定权限的方式将在稍后说明。

 Instance methods 跟在成员变数(即 instance variables) 后。

格式为: scope (returnType) methodName: (parameter1Type) parameter1Name;scope 有 class 或 instance 两种。

instance methods 以 - 开头,class level methods 以 + 开头。

 Interface 以一个 @end 作为结束。

@implementation 基于 "Programming in Objective-C," Copyright © 2004 by Sams Publishing 一书中的范例,并经过允许而刊载。

 Fraction.m  #import "Fraction.h"  #import   @implementation Fraction  -(void) print {  printf( "%i/%i", numerator, denominator );  }   -(void) setNumerator: (int) n {  numerator = n;  }   -(void) setDenominator: (int) d {  denominator = d;  }   -(int) denominator { return denominator;  }    -(int) numerator {  return numerator;  } @end   o Implementation 以 @implementation ClassName 开始,以 @end 结束。

 Implement 定义好的 methods 的方式, 跟在 interface 中 宣告时很近似。

把它们凑在一起 基于 "Programming in Objective-C," Copyright © 2004 by Sams Publishing 一书中的范例,并经过允许而刊载。

 main.m  #import  #import "Fraction.m"   int main( int argc, const char *argv[] ) {  // create a new instance  Fraction *frac = [[Fraction alloc] init];                // set the values [frac setNumerator: 1]; [frac setDenominator: 3]; // print it printf( "The fraction is: " ); [frac print]; printf( "/n" ); // free memory [frac release]; return 0; }  o   o output The fraction is: 1/3 Fraction *frac = [[Fraction alloc] init];这行 程序代码中有很多重要的东西。

 在 Objective-C 中呼叫 methods 的方法是 [object method],就像 C++的 object->method()。

 Objective-C 没有 value 型别。

所以没有像 C++ 的 Fraction frac; frac.print(); 这类的东西。

在 Objective-C 中完全使用指针来处理对象。

 这行程序代码实际上做了两件事: [Fraction alloc] 呼叫了 Fraction class 的 alloc method。

这就像 malloc 内存,这个动作也做了一样的事情。

 [object init] 是一个建构子(constructor)呼叫, 负责初始化对象中的所有变量。

它呼叫了 [Fraction 

  • Object-C 经典入门教程

    Object-C 经典入门教程

    Object-C 经典入门教程...

    贡献者:网络收集
    931898
  • object-c基础教程

    object-c基础教程

    object-c基础教程...

    贡献者:网络收集
    816604
  • object-c入门基础

    object-c入门基础

    object-c入门基础...

    贡献者:网络收集
    125279
  • 由C#转Object-C开发入门基础

    由C#转Object-C开发入门基础

    由C#转Object-C开发入门基础...

    贡献者:网络收集
    763235
  • Object+C语法快速入门

    Object+C语法快速入门

    Object+C语法快速入门...

    贡献者:网络收集
    487957
  • C_入门经典

    C_入门经典

    C_入门经典...

    贡献者:网络收集
    539972
  • C语言入门经典(第四版)7-指针

    C语言入门经典(第四版)7-指针

    C语言入门经典(第四版)7-指针...

    贡献者:网络收集
    449719
  • C语言入门经典(第四版)2-编程初步

    C语言入门经典(第四版)2-编程初步

    C语言入门经典(第四版)2-编程初步...

    贡献者:网络收集
    230302
  • C语言入门经典(第四版)1-C语言编程

    C语言入门经典(第四版)1-C语言编程

    C语言入门经典(第四版)1-C语言编程...

    贡献者:网络收集
    955051
  • c  入门经典习题集

    c 入门经典习题集

    c 入门经典习题集...

    贡献者:网络收集
    627457
  • 网友在搜
    realm defense 破解 霸穹 封神演义百度网盘 icey手机版破解版 2018香港电视剧排行榜 星际战甲摸尸p多少钱 bochs xp镜像下载 job ppt k4316次列车时刻表 陈潇的剩余人生店 视频 大金主你 chanibaby 名校毕业混的最惨知乎 黑天黑地黑道情 电视剧 乐视即将倒闭 盲目扩张 Cad打开 无法识别版本 当贝dns优选改不了 ibm的管理咨询如何 一吻定情柏原崇版 Everett Rodd gb t 34590.4 2017 韩国悲惨漫画39部高清 darling in the第四集 on an early train one for this one wwwben8888 到家尚门 特殊服务经历 you can hardly 杭州星巴克兼职招聘 oracle define的用法 ncce英汉科技词典 fm2009 9.3.1 fmrte 紫水晶的功效与作用 2017四川国税体检名单 a curve is a line 佛教歌曲大悲咒汉语版 崩坏3 5-12任务 h siuniu extreme commute 安桥蓝牙耳机怎么开机 hbase key value full size尺寸 系统导航界面 aqours call 基金的书 知乎 chartjs y轴显示值 hive 1.1.0 cdh5.12.0 js 去重两个数组 perl 多进程文件写入 azkaban deja que西班牙语 劳斯莱斯 古斯特 幻影 外联专员 翻译 都暻秀 vapp直播 我一定到 鸽子表情 Femdom with spanking 看见你的声音5 韩国 nonsense 华为 免root 超频

    声明:本站内容源于网络,出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,请咨询相关专业人士。

    如果无意之中侵犯了您的版权,或有意见、反馈或投诉等情况, 联系我们:shnews500#tom.com

    All Rights Reserved 海日网 手机站 网站地图 网站栏目