在工作期间,在和做iOS的同事之间聊天的时候,发现iOS开发也很有意思,所以想学学iOS开发,同事推荐了这本书,Objective-C 的,因为之前有做过Android的开发,所以学习这本书的话,只是熟悉一下Objective-C的语法习惯,使用习惯,看看是不是还有什么JAVA里面没有的,同时记了些笔记,因为有原来的Android基础,所以一些相同的没有记下,适合JAVA向Objective-C转,只是入门,要是想自习学的话还是好好看看这本书----Objective-C程序设计下载地址自己找。
1.键盘输入:
scanf("%i",&number);
2.系统自动实现get、set方法
在接口部分@property int numerator,denominator
在实现部分@synthesize numerator,denominator
这样就不必再自己写get、set方法了,而且运行较高效,也不用声明变量了;
3.具有多个参数的方法
-(void) setTo: (int) n over:(int) d;
-(int) set:(int) n:(int) d;//不带参数名的方法
4.将类对象作为参数传入
-(void) add: (Fraction *) f;//传入的是类对象的引用
5.声明类的引用
@class XYPoint;只是简单的说明XYPoint是一个类,在后面的引用中不会报错,但是要是使用到XYPoint的方法的时候,还是使用#import"";
6.id dataValue;
Complex *c = [[Complex alloc]init];
dataValue = c;
dataValue可以调用Complex的所有的方法,在运行时确定需要动态调用的方法的
[c isMemberOfClass: [Complex class]];//判断c是否是Complex的成员
[c isKindOfClass: [Complex class]];//判断c是否是Complex或其子类的成员
[c respondsToSelector: @selector(setReal:andImaginary:)]//c是否响应setReal:andImaginary:方法
[Complex instancesResponseToSelector:@selector(setReal:andImaginary:)]//Complex是否响应setReal:andImaginary:方法
[c performSelector @selector(setReal:andImaginary:)]//执行setReal:andImaginary:方法
7.定义一个全局变量而且外部变量
在所有的方法、类、函数定义之外声明全局变量
使用的时候使用extern + 变量即可使用或改变全局变量的值
定义一个全局但不是外部变量
使用static定义,只在本文件中定义了该变量之后的部分可使用,其他文件不可以
8.为数据类型指派另一个名称
typedef int Counter;
Counter j;
typedef Number *NumberObject;
NumberObject myValue;
Number *myValue;
9.分类
可以将类的定义模块化到相关方法的组或分类中。提供了扩展现有类的简便方式,不必访问类的源代码,也无需创建子类
创建分类的接口部分
@interface Fraction(MathOps)//分类的名字是MathOp,扩展了Fraction
创建分类的实现部分
@implementation Fraction(MathOps)
类的扩展-(未命名分类)@interface Fraction()//不指定名字
相对于命名分类来说,可以通过定义附加的实例变量来扩展类,在命名类中是不允许的,而且声明的方法必须在主实现区域实现,不得在分离的实现区域实现
10.协议
多个文件共享的方法列表,只有方法名,没有实现,在遵守该协议的类中实现。--类似接口
@protocol 名字
@optional //选择实现的方法
@required //需要实现的方法
遵守协议 类名:NSObject<协议名>
判断是否遵守某协议 [object conformsToProtocol:@prot(协议名)]
11.块
//块定义
^(void)
{
NSLog(@"programing is fun");
}
//块使用
void (^printMessage)(int)=
^(int n)
{
NSLogin(@"Program is fun %i",n);
};//块的定义以;结尾
printMessage(2);
13.xcode中访问Foundation文档 Help-Documentation
显示需要的某一个的时候,按option并单击鼠标
14.在NSArray数组中,只能放进去对象,不可用使用基本数据类型(int、float等),所以对于数字等应使用NSNumber,把数据放到NSNumber([NSNumber numberWithInteger:1])中,在放到NSArray中
15.可变字符串NSMutableString NSString的子类
16.不可变数组NSArray、可变数组NSMutableArray(指的是数组的长度可不可变)
17.词典
NSMutableDictionary----可变词典
NSDictionary----枚举词典(不可变,在初始化的时候dictionaryWithObjectsAndKeys把所有的键值都列出来)
创建的时候以nil结尾
18.文件
NSFileManager--对文件创建、读取数据、写入、重命名、删除、是否存在、属性、复制、两个文件内容是否相同
NSFileManager *fm = [NSFileManager defaultManager];//初始化
NSData用来设置缓冲区、将文件内容读入缓冲区或将缓冲区的内容写入文件
NSData *fileData;
fileData = [fm contentsAtPath:@"file1name"];//将file1name文件中的内容读到fileData中
[fm createFileAtPath:@"file2Name" contents:fileData attributes:nil]//把fileData中的内容写到file2name中
NSFileHandle--对文件打开、读写、查找指定位置、读取或写入特定数目的字节
NSURL
在网站读取任何类型的数据都可使用dataWithContentsOfURL(dictionaryWithContentsOfURL、arrayWithContentsOfURL)
NSBundle
创建应用的时候,系统存储相关数据到应用包中,访问这些资源使用NSBundle
[[NSBundle mainBundle]pathForResource:@"filename" ofType: @"txt"];
[[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" inDirectory:@"birdImages"];
(/)表示根目录
(~)表示用户主目录~/filename
19.复制
遵守<NSCopying><NSMutableCopying>协议
直接“=”复制,会是两个变量指向同一个对象
使用
[array copy](浅复制)会复制出另一份,但是还是会指向相同的地址
20.归档
writeToFile:atomically://将数据归档到文件,可以使用数组,NSString,NSData等对象发送消息,
dictionaryWithContentsOfFile://读取数据到发送消息的对象
[NSKeyedArchiver archiveRootObject:toFile:]//归档内容到文件
[NSKeyedUnarchiver unarchiveObjectWithFile:]//在文件里读出内容
//上面存入的是Array则读出Array,存的是什么类型,读出是什么类型
自定义对象要遵守
<NSCoding>协议,实现encodeWithCoder,和initWithCoder方法