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

时间: 2024-10-13 00:14:23

Objective-C学习笔记的相关文章

Objective - C学习笔记:UIView的使用方法

1.1 - (void)layoutSubviews; * 当一个控件的frame发生改变的时候就会自动调用 * 一般在这里布局内部的子控件(设置子控件的frame) * 一定要调用super的layoutSubviews方法 1.2 - (void)didMoveToSuperview; * 当一个控件被添加到父控件中就会调用 1.3 - (void)willMoveToSuperview:(UIView *)newSuperview; * 当一个控件即将被添加到父控件中会调用 @interf

Objective - C 学习笔记:UIPickerView 和 UIDatePicker的基本使用

1.UIPickerView 1.1. UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; // 代理(用来告诉UIPickerView每1列的每1行显示什么内容,监听UIPickerView的选择) @property(nonatomic,assign) id<UIPickerViewDelegate>

Objective - C 学习笔记:程序启动原理

1.Info.plist常见的设置 * 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 * 在旧版本Xcode创建的工程中,这个配置文件的名字就叫“Info.plist” * 项目中其他Plist文件不能带有“Info”这个字眼,不然会被错认为是传说中非常重要的“Info.plist” * 项目中还有一个InfoPlist.strings的文件,跟Info.plist文件的本地化相关

objective - C学习笔记: tableView的刷新

1: 数据刷新的总体步骤 1.1: 修改模型数据 1.2: 刷新表格(刷新界面) 2: 刷新表格的方法 // 全局刷新(每一行都会重新刷新) - (void)reloadData; // 局部刷新(使用前提: 刷新前后, 模型数据的个数不变) - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; // 局部删除(使用前提: 模型数据减少的个

Objective - C学习笔记:控制器的管理

1. 如何创建一个控制器 1.1. 控制器常见的创建方式有以下几种 //1.1.1:通过storyboard创建 //1.1.2:直接创建 YHViewController *viewController = [[YHViewController alloc] init]; //1.1.3:指定xib文件来创建 YHViewController *viewController= [[YHViewController alloc] initWithNibName:@"YHViewControlle

Objective - C 学习笔记:消息机制的原理与使用

1.通知中心(NSNotificationCenter) 1.1.每一个应用程序都有一个通知中心(NSNotificationCenter*)实例,专门负责协助不同对象之间的消息通信 1.2.这就是观察者模式(Observer),任何一个对象都可以向通知中心发布通知(NSNotification*),描述自己在做什么.其他感兴趣的对象(Observer观察者)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知 2.通知(NSNotification) 2.1.一个完整的通知

Objective - C 学习笔记:程序启动的完整过程

1. main函数 2. UIApplicationMain * 创建UIApplication对象 * 创建UIApplication的delegate对象 3.1 delegate代理开始处理(监听)系统事件  (没有storyboard) * 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法 * 在application:didFinishLaunchingWithOptions:中创建UIWindow * 创建和

Objective - C 学习笔记:监听文本框TextField的文字改变

* 一个文本输入框的文字发生改变时,文本输入框会发出一个UITextFieldTextDidChangeNotification通知 * 因此通过监听通知来监听文本输入框的文字改变 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:textField]; // textField

ufldl学习笔记与编程作业:Convolutional Neural Network(卷积神经网络)

ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在deep learning高质量群里面听一些前辈说,不必深究其他机器学习的算法,可以直接来学dl. 于是最近就开始搞这个了,教程加上matlab编程,就是完美啊. 新教程的地址是:http://ufldl.stanford.edu/tutorial/ 本节学习地址:http://ufldl.stanford.edu/tutorial/supervised/ConvolutionalNeuralNetwork/ 一直没更

ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)

ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在deep learning高质量群里面听一些前辈说,不必深究其他机器学习的算法,可以直接来学dl. 于是最近就开始搞这个了,教程加上matlab编程,就是完美啊. 新教程的地址是:http://ufldl.stanford.edu/tutorial/ 本节是对ufldl学习笔记与编程作业:Softmax Regression(softmax回归)版本的改进. 哈哈,把向量化的写法给写出来了,尼玛好快啊.只需要2分钟,2