ios应用开发Objective-C代码


目录:

   第 1 页:设定环境

   第 2 页: 缔造 Classes

   第 3 页: 详尽 注明

   第 4 页:继承、多型(Inheritance, Polymorphism)以及 其余物件导向 性能

   第 8 页:记忆体治理

   第 9 页:Foundation Framework Classes

  全部这篇初学者指南的塬始码都 可以由 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

  1. hello.m 
  2.  
  3. #import 
  4.  
  5. int main( int argc, const char *argv[] ) { 
  6.  
  7. printf( "hello world " ); 
  8.  
  9. return 0; 
  10.  
  11.  

  输出

helloworld

在Objective-C中 使用#import 接替#include

Objective-C的预设副档名是.m