`
dowhathowtodo
  • 浏览: 771292 次
文章分类
社区版块
存档分类
最新评论

Object-c笔记1

 
阅读更多
  • 这篇教学 假设你已经有一些基本的 C 语言知识,包括 C 数据型别、什么是函式、什么是回传值、关于指针的知识以及基本的 C 语言内存管理。
  • Objective-C,是 C 的 衍生语言,继承了所有 C 语言的特性。是有一些例外,但是它们不是继承于 C 的语言特性本身。
  • nil:在 C/C++ 你 或许曾使用过 NULL,而在 Objective-C 中 则是 nil。不同之处是你可以传递讯息给 nil(例如 [nil message];),这是完全合法的,然而你却不能对 NULL 如法炮制。
  • BOOLC 没 有正式的布尔型别,而在 Objective-C 中也不是「真的」有。它是包含在 Foundation classes(基本类别 库)中(即 imp<wbr></wbr>ort NSObject.hnil 也是包括在这个头文件内)。BOOL Objective-C 中有两种型态:YES NO, 而不是 TRUE FALSE
  • #imp<wbr></wbr>ort vs #include:就如同你在 hello world 范例中看到的,我们使用了 #imp<wbr></wbr>ort#imp<wbr></wbr>ort gcc 编译程序支援。我并不建议使用 #include#imp<wbr></wbr>ort 基本上跟 .h 档头尾的 #ifndef #define #endif 相同。许多程序员们都同意,使用这些东西这是十分愚蠢的。无论如何,使用 #imp<wbr></wbr>ort 就对了。这样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会有足够的 Objective-C 程序员可以坚持保留它或是将它放回来。偷偷告诉你,Apple 在它们官方的程序代码中也使用了 #imp<wbr></wbr>ort。所以万一有一天这种事真的发生, 不难预料 Apple 将会提供一个支持 #imp<wbr></wbr>ort gcc 分支版本。
  • Objective-C 中, method message 这两个字是可以互换的。不过 messages 拥有特别的特性,一个 message 可以动态的转送给另一个对象。在 Objective-C 中,呼叫对象上的一个讯息并不一定表示对象真的会实作这个讯息,而是对象知道如何以某种方式去实作它,或是转送给知道如何实作的对象。
  • 编译 hello world
    • hello.m

§ #imp<wbr></wbr>ort <stdio.h>

§

§ int main( int argc, const char *argv[] ) {

§ printf( "hello world/n" );

§ return 0;

}

    • 输出

hello world

  • Objective-C 中使用 #imp<wbr></wbr>ort 代替 #include
  • Objective-C 的预设扩展名是 .m

优点与缺点

  • 优点
    • Cateogies
    • Posing
    • 动态识别
    • 指标计算
    • 弹性讯息传递
    • 不是一个过度复杂的 C 衍生语言
    • 可透过 Objective-C++ C++ 结合
  • 缺点
    • 不支持命名 空间
    • 不支持运算符多载(虽然这常常被视为一个优点,不过正确地使用运算符 多载可以降低程序代码复杂度)
    • 语言里仍然有些讨厌的东西,不过不比 C++ 多。
  • 创建 classes
    • @interface
      • Fraction.h

§ #imp<wbr></wbr>ort <Foundation/NSObject.h>

§

§ @interface Fraction: NSObject {

§ int numerator;

§ int denominator;

§ }

§

§ -(void) print;

§ -(void) setNumerator: (int) d;

§ -(void) setDenominator: (int) d;

§ -(int) numerator;

§ -(int) denominator;

§ @end

      • NSObjectNeXTStep 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
      • Fraction.m

§ #imp<wbr></wbr>ort "Fraction.h"

§ #imp<wbr></wbr>ort <stdio.h>

§

§ @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

      • Implementation @implementation ClassName 开始,以 @end 结束。
      • Implement 定义好的 methods 的方式,跟在 interface 中宣告时很近似。

分享到:
评论

相关推荐

    Object-C笔记1_代码

    纯属自己学习时候的示例代码,对应我的博文"纯属自己的Object-C 学习笔记(1)-----自定义类的定义和调用".

    iPhone笔记-Object-c基础

    iPhone笔记-Object-c基础总结

    object-c学习笔记

    本人是刚刚开始接触到OBJECT-C ,这是我在第一次学习object-C 是的学习笔记,请大家分享,赐教

    Object-C 学习笔记

    Object-C 学习笔记 自己整理的 适合初学者

    Object-C Programming

    Object-C Programming 前面7章的学习笔记,如果觉得好可以下载原本进行学习

    object-c入门学习笔记分享-继承.txt

    object-c入门学习笔记分享--继承,初学者可参考

    xmljava系统源码-NIiOS:iOS端常用知识点总结:Object-C

    Object-C源码解析 1.你真的了解 load 方法么? load 作为 Objective-C 中的一个方法,与其它方法有很大的不同。它只是一个在整个文件被加载到运行时,在 main 函数调用之前被 ObjC 运行时调用的钩子方法。其中...

    Objective-C语法大全

    笔者精心总结的,希望给读者帮助,很好的文档,初学者的良师益友

    Redis全套学习笔记 (带章节目录) 完整版pdf

    它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、...

    OC学习笔记合集

    OC学习笔记合集,记录整理学习OBJECT-C过程中遇到的问题。

    object-detect-opencv:这是面向对象入门的机器学习教程

    所以我只是传递0(或-1)。 您可以通过传递1来选择第二台摄像机,依此类推。 之后,您可以逐帧捕获。 但最后,不要忘记释放捕获。 有时,cap可能尚未初始化捕获。 在这种情况下,此代码显示错误。 您可以通过cap....

    3D-object-visualization-opnegl

    渲染的3D对象是: 长方体双锥体六棱锥十边形金字塔怎么跑$ mkdir build$ cd build$ cmake ..$ make$ ./Hello-World 输入3个选项之一(1、2、3)以查看不同的十二面体。按键绑定移动对象的关键是: A :沿负x轴移动D...

    H3C 防火墙配置命令

    H3C 防火墙 网络设备 配置 总结各种命令 笔记

    python学习笔记(一)-python简介.pdf

    python学习笔记(⼀)---python简介 Python简介 1. Python是⼀种计算机程序设计语⾔。 2. python是⼀种什么样的语⾔? ⾸先,不论我们⽤任何语⾔来开发,都是为了让计算机能够⼲活,⽐如下载⼀个MP3,编写⼀个⽂档等...

    matlab集成c代码-awesome-object-detection:真棒对象检测

    Matlab集成的c代码物体检测 [目录] 这是有关对象检测的很棒的文章列表。 如果您想根据时间阅读论文,可以参考。 神经网络 快速R-CNN 更快的R-CNN 遮罩R-CNN 轻型头R-CNN 级联R-CNN SPP网 YOLO YOLOv2 YOLOv3 OLT ...

    iphone开发学习笔记(1)--NSLog

    iphone开发学习笔记(1)--NSLog

    acpi控制笔记本风扇转速

    Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the AcpiHwInitialize function - the FADT registers are now validated when the table is loaded. Added two new warnings during FADT ...

    赵璐python教程答案-Python学习习题笔记-基础篇.pdf

    赵璐python教程答案_Python学习习题笔记---基础篇 基本数据类型: 1:info = 'abc' info[2] = 'd' 结果是什么,为什么会报错呢? 答: TypeError: 'str' object does not support item assignment 字符串是不可变数据...

    Javascript Object 对象学习笔记

    new Object() new Object(value) 参数 value  可选的参数,声明了要转换成Number对象、Boolean对象或String对象的原始值(即数字、布尔值或字符串)。JavaScript 1.1之前的版本和ECMAScript Vl不支持该对象。 ...

    《Python数据分析基础》笔记:“TypeError, ‘int’ object is not iterable”

    学习《Python数据分析基础》第3章最后一个例子:为每个工作簿和工作表计算总数和均值时,在pandas 实现这个例子中的data 处...TypeError, ‘int’ object is not iterable 原创文章 36获赞 28访问量 4万+ 关注 私信

Global site tag (gtag.js) - Google Analytics