博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Object-C2.0学习笔记(下)
阅读量:6431 次
发布时间:2019-06-23

本文共 4920 字,大约阅读时间需要 16 分钟。

hot3.png

8.继承

//在接口文件中通常这样指定根类@interface Fraction:NSObject...@end

类Fraction是从NSObject派生来的,因NSObject是层次结构的最顶端,因此称为根类。

9.多态、动态类型和动态绑定

多态:相同的名称,不同的类。

动态绑定和id类型:id可以用来存储属于任何类的对象。

编译时和运行时检查:编译时无法确定只能在运行时检查

id数据类型和静态类型

使用@try处理异常

10.变量和数据类型

变量的作用域,对象的初始化方法,数据类型。

//设置器和访问器#import 
/*接口部分*/@interface Person : NSObject{    int myNumber;//实例变量}- (void)print;//打印,返回为空- (void)setMyNumber : (int) number;//设置器- (void)myNumber : (int) number;//访问器@end#import "Person.h"/*实现部分*/@implementation Person- (void)print{    NSLog(@"Person number is :%d", myNumber);//打印值}- (void)setMyNumber : (int) number{    myNumber = number;}- (int) myNumber : (int) number{    return myNumber;//获取myNumber值}@end

11.分类和协议

使用分类以模块的方式向类添加方法,创建标准化方法列表供他人实现。

12.预处理程序

预处理程序语句使用#标记,这个符号必须是一行中的第一个非空格字符。

13.基本C语言特性

id类型是通用的指针类型

实例变量存储在结构中

对象变量实际上是指针

方法是函数,而消息表达式是函数调用。

14.Foundation框架

Foundation框架为所有的程序奠定基础,可允许一些基本对象,如数字,字符串,时间,日期,自动化的内存管理等。

15.数字、字符串集合

Foundation框架提供一些基本对象:数字,字符串,集合,数组,字典和集合形式使用的成组对象。

Foundation框架包括大量的类,方法,函数。在Mac OS X下,约有125个可用头文件,可通过

#import <Foundation/Foundation.h>

的简便形式进行导入,因为Foundation.h文件导入了Foundation所有的头文件,所有不用担心是否导入了正确

的头文件。XCode会自动将这个头文件插入程序。

预编译的头文件可以避免额外的开销。预编译的头文件是编译器预先处理过的文件。

16.使用文件

用Foundation框架可以对文件或目录执行基本操作,这些操作由管理文件和目录的NSFileManager类提供,这个类的

方法具有功能如下:

创建一个新文件

从现有文件中读取数据

将数据写入文件

重命名文件

删除文件

测试文件是否存在

确定文件的大小和其他属性

复制文件

测试两个文件的内容是否相同。

NSBundle提供了在应用中使用包(bundle)的方法,包括搜索包中的特定资源(如图片……

NSURL类的中URL方法可以从网上读取数据。

NSFileHandle类的方法可用于各种设备或套接字,可以实现的功能有:

打开一个文件,执行读,写或更新(读取和写入)操作。

在文件中查找指定位置。

从文件中读取特定数目的字节,或将指定数目的字节写入文件中。

17.内存管理和自动引用计数

自动垃圾收集

手工引用计数和自动释放池

自动引用计数(ARC)

18.复制对象

深复制:

浅复制:

19.归档

在OCK中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象。通常,这个过程

包括将(多个)对象写入文件中,以便以后读取该对象。

两种归档数据的方法:属性列表,带键值的编码。

20.Cocoa和Cocoa Touch简介

Cocoa是一种为Mac OS X应用程序提供了丰富用户体验的框架,实际由三个框架组成:

Foundation框架

Core Date框架:便于数据库存储和管理数据

Application Kit(AppKit)框架:提供与窗口,按钮,列表等相关的类。

注:

Cocoa框架应用于Mac OS X桌面和笔记本电脑应用程序的开发,而Cocoa Touch框架应用

于ios设备上应用程序的开发。

Cocoa和Cocoa Touch都有Foundation和Core Data框架。但在Cocoa Touch下,UIKit代替了APPKit框架。

Cocoa Touch还提供了使用陀螺仪和加速器(与GPS和Wifi一样能跟踪位置)的类和触摸式界面。

21.编写IOS程序

//iPhone_1 ViewController.himport 
@interface iPhone_1ViewController : UIViewController @property (strong, nonatomic) IBOutlet UILabel *display; -(IBAction) click1; @end  //iPhone_1 ViewController.m @implementation iPhone_1ViewController  @synthesize display;  -(IBAction) click1{ display.text = @"1"; }  //此处未显示Xcode插入的其他方法  //... @end注:通过click1方法设置UILabel的text属性将出口变量display设为字符串"1".再将按钮的按下动作连接到这个 方法,它能执行预定的操作,将1放入iphone窗口显示。

iPhone分数计算器

//Fraction_CalculatorViewController.h接口文件#import 
#import "Calculator.h"@interface Fraction_CalculatorViewController : UIViewController@property (strong, nonatomic) IBOutlet UILabel *display;-(void) processDgit: (int) digit;-(void) processOp: (char) theOp;-(void) storeFracPart;//数字键-(IBAction) clickDigit: (UIButton *) sender//算术操作键-(IBAcion) clickPlus;-(IBAcion) clickMinus;-(IBAcion) clickMultiply;-(IBAcion) clickDivide;//Misc键-(IBAcion) clickOver;-(IBAcion) clickEquals;-(IBAcion) clickClear;@end
//Fraction_CalculatorViewController.m#import "Fraction_CalculatorViewController.h"@implementation Fraction_CalculatorViewController{    char op;    int currentNumber;    BOOL firstOperand,isNumberator;    Calculator *myCalculator;    NSMutableString *displayString;}@synthesize display;-(void) viewDidLoad{//覆盖应用程序载入的自定义方法firstOperand = YES;isNumerator = YES;displayString = [NSMutableString stringWithCapacity:40];myCalculator = [[Calculator alloc] init];}-(void) processDigit:(int) digit{currentNumber = currentNumber * 10 + digit;[displayString appendString:[NSString stringWithFormat:@"%i",digit]];display.text = displayString;}-(IBAction) clickDigit:(UIButton *) sender{int digit = sender.tag;[self processDigit:digit];}

处理分数的Calculator类

//Calculator.h接口文件#import 
#import "Fraction.h"@interface Calculator : NSObject@property (strong, nonatomic) Fraction *operand1, *operand2, *accumulator;-(Fraction *) performOperation:(char) op;-(void) clear;@end//Calculator.m实现文件#import "Calculator.h"@implementation Calculator@synthesize operand1, operand2, accumulator;-(id) init{    self = [super init];    if (self){        operand1 = [[Fraction alloc] init];        operand2 = [[Fraction alloc] init];        accumulator = [[Fraction alloc] init];    }    return self;}-(void) clear{    accumulator.numerator = 0;    accumulator.denominator = 0;}-(Fraction *)performOperation:(char) op{    Fraction *result;    switch(op){        case '+':result = [operand1 add:operand2];break;        case '-':result = [operand1 subtract:operand2];break;        case '*':result = [operand1 multiply:operand2];break;        case '/':result = [operand1 divide:operand2];break;    }    accumulator.numerator = result.numerator;    accumulator.denominator = result.denominator;    return accumulator;    }@end

附录:

gcc是在Mac OS X上编译OC程序所用的标准编译器

gdb由gcc编译的程序的标准调试工具

转载于:https://my.oschina.net/xiejunbo/blog/471758

你可能感兴趣的文章
IOS中复制对象的用法及深拷贝和浅拷贝详解
查看>>
lfs
查看>>
Eclipse内存不够解决办法
查看>>
关于tbody js取法兼容。
查看>>
[CC]点云密度计算
查看>>
CATransition 动画处理视图切换
查看>>
[转载] 高等应用数学问题的matlab求解——第3章 微积分问题的计算机求解
查看>>
大整数比较大小
查看>>
C++ 指定路径文件夹存在与否查询及文件夹创建
查看>>
八大排序算法的Java实现
查看>>
IDEA+Maven+Tomcat构建项目流程
查看>>
数据是重要的战略资源,数据同样是产品非常重要的组成部分。淘宝对中国最大的贡献,不只是方便了老百姓购物,而是把中国消费者的消费习惯数据慢慢沉淀下来。...
查看>>
Leetcode Find Minimum in Rotated Sorted Array
查看>>
Python接口测试-使用requests模块发送post请求
查看>>
System.currentTimeMillis()计算方式与时间的单位转换
查看>>
Extra:Variable Types
查看>>
js传参时,没有参数传入,默认值的设置
查看>>
ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程Thread中委托的使用(六)...
查看>>
最新整理知识结构图
查看>>
linux安装mysql
查看>>