Objective-C学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Objective-C学习笔记相关的知识,希望对你有一定的参考价值。

  1. OC是C语言的一个扩展集,几乎OS X或ios平台上的所有应用程序都是该语言开发的。

  2. 可以使用工具包Cocoa(针对OS X系统)和Cocoa Touch(针对IOS系统)来开发功能完备的Objective-C项目.

  3. Xcode是苹果提供的用来创建IOS和OS X应用程序的开发环境

  4. 点击window菜单下的Welcome to Xcode选项或使用Command+Shift+l快捷键就可以看到最近编辑过的项目

  5. File->New->New Project,选择Mac OS X->Application,右边选择Command Line Tool,最后选择命令行工具类型为Foundation。 创建一个项目。

  6. 点击Run按钮或者快捷键Command+R,生成并运行程序。使用View->Debug Area->Activate Console或者快捷键Command+Shift+C,打开Xcode控制台窗口,显示输出结果。

  7. main.m 就是包含了OC程序代码的源文件。

#import <Foundation/Foundation.h>
int main(int argc, const char* argv[])
{
  NSLog(@"HELLO Objectibe-C!");
  return (0);

} //main


8. .m代表message,OC的一个主要特性。

9. import引入框架Foundation中的Foundation.h头文件

10. 框架是一种把头文件、库、图片、声音等内容聚集在一个独立单元中的集合体。

11. Cocoa、Carbon、QuickTime和OpenGL等作为框架集,Cocoa的组成部分有:Foundation、Application Kit(AppKit)框架,支持型框架Core Animation和Core Image。

12. 每个框架都有一个主头文件,它包含了框架内所有的头文件。通过在主头文件中使用#import,就可以访问框架内的所有功能。

13. Xcode使用预编译头文件的方法来加快读取速度,通过#import导入这种文件时,加载速度会非常快。

14./System/Library/Frameworks/Foundation.framework/Headers/包含了Foundation框架的头文件

15. NSString字符串,不过字符串一般使用字符串指针NSString. NSLog输出时,第一个参数必须带有@

16. BOOL占有8位,用YES和NO两个值。 8位数*******0表示BOOL时为0,  8位数*******1对应BOOL时为1

17. OOP(Object-Oriented Programming)面向对象编程

18. 间接(indirection),让其他人代替自己做某件事,或者让他人代替自己去完成工作

19. 命令行参数(启动参数)的输入,如果使用Xcode编辑程序,运行时,Product->Edit Scheme,Arguments,点击Arguments Passed On Launch标题下的加号按钮,然后输入启动参数,OK。

20. 在OC中,方括号[],用于通知某个对象该去做什么。方括号里的第一项是对象,其余部分是需要对象执行的操作。

21. 在OC中,通知对象执行某种操作称为发送消息(也称为“调用方法”),[shape draw]表示向shape对象发送draw消息。

id shape = shapes[i];

[shape draw];


22. 类(class) 是一种表示对象类型的结构体

23. 对象(object) 是一种包含值和指向其类的隐藏指针的结构体

24. 实例(instance) 是“对象”的另一种称呼

25. 消息(message) 是对象可以执行的操作

26. 方法(method) 是为响应消息而运行的代码

27. 方法调度(method dispatcher) 是OC使用的一种机制

28. 接口(interface) 是类为对象提供的特性描述

29. 实现(implementation) 是使接口能正常工作的代码

//接口,就是C++中的类

//实现,就是C++中类方法的实现

@interface Circle : NSObject

{

  @private

  ShapeColor fillColor;

  ShapeRect bounds;

}

- (void) setFillColor : (ShapeColor) fillColor;

- (void) setBounds : (ShapeRect) bounds;

- (void) draw;

@end //Circle

注释:声明了一个类Circle, 父类是NSObject,它有数据成员fillColor和bounds,成员方法setFillColor、setBounds、draw, setFillColor的返回值为void并且有一个ShapeColor类型的参数fillColor,@end表示类Circle声明结束


30. @interface用于定义类的公共接口。 通常,接口被称为API(Application programming interface)

31. 类的实现

@implementation Circle

- (void) setFillColor : (ShapeColor) c

{

  fillColor = c;

} //setFillColor

- (void) setBounds : (ShapeRect) b

{

  bounds = b;

} //setBounds

注释:@implementation是一个编译器指令,表明你将为某个类提供代码。接下来的是各个方法的定义。 可以定义一些在声明中没有出现过的方法,可以把它们看做是仅能在当前类实现中使用的私有方法。 但是,OC中不存在真正的私有方法,也无法吧某个方法标识为私有方法,从而禁止其他代码调用它。 这个OC动态本质的副作用。


32. OC运行时是指用户运行应用程序时,支持这些应用程序的代码块。

33. 创建对象的过程,叫做实例化(instantiation)

34. 实例化对象时,需要分配内存,然后将这些内存初始化并保存为有用的默认值,这些值不同于通过新分配的内存获得的随机值。 内存分配和初始化工作完成之后,就意味着新的对象实例已经创建好了。

35. OC的一个特性,可以把类当成对象来发送消息。

36. 为了创建一个新的对象,需要向相应的类发送发送new消息。该类接收并处理完new消息后,我们就会得到一个可以使用的新对象实例。

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

{

  id shape[3];

  ShapeRect rect0 = {0, 0, 10, 30};

  shapes[0] = [Circle new];

  [shapes[0] setBounds:rect0];

  [shapes[0] setFillColor:kRedColor];

  ...

  drawShapes (shapes, 3);

  return (0);

} //main


以上是关于Objective-C学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:python3,代码片段(2017)

[OC学习笔记]熟悉Objective-C

[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十一章 属性

Objective-C学习笔记:defer的实现方法详解

objective-c学习笔记 第一集 :大概了解一下什么是objective-c

Objective-C学习笔记——循环语句for和do-while的使用