黑马程序员--ios基础

来源:互联网 发布:数据恢复后表格打不开 编辑:程序博客网 时间:2024/05/01 19:20

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">ios培训</a>、期待与您交流! ----------

1 数组

1.1 声明

NSArray *array;

1.2 数组的生成

NSArray *array;array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];NSMutableArray *array = [NSMutableArray array]; // 声明可修改的数组同时对它赋值

1.3 数组元素的引用和赋值

// 元素的引用[array objectAtIndex:0];[array objectAtIndex:1];// 赋值(NSMutableArray的实例)[array removeObjectAtIndex:1]; // 删除一个元素[array insertObject:@"1" atIndex:1]; // 在删除的地方插入一个元素

1.4 数组的长度

int array_num = [array count];

2 字典

2.1 声明

NSDictionary *dictinary;dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"value1",@"key1",@"value2",@"key2",nil,];NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; // 声明可修改的字典的同时对它赋值

2.2 字典元素的引用和赋值

//元素的引用id val1 = [dictionary objectForKey:@"key1"];id val2 = [dictionary objectForKey:@"key2"];// 赋值(NSMutableDictionary的实例)[dictionary setObject:@"value1" forKey:@"key1"];

2.3 字典的操作

・获得Key

NSArray *keys = [dictionary allkeys]

・获得值

NSArray *values = [dictionary allValues];

・删除Key(NSMutableDictionary的实例)

[dictionary removeObjectForKey:@"key1"];

3 控制语句

if语句

if ( 条件 ) {}
if ~ else语句
if (条件) {} else {}
if ~ else if 语句
if ( 条件 ) {} else if ( 条件 ) {}

while语句

int i = 0;while (i < 5) {// 处理i++;}

for语句

for (int i = 0; i < 5; i++) {//处理}

4 函数定义

虽然大多数情况下是用类中的方法来定义函数,但也可以用C语言的函数定义方法。
另外,还有作为对现有类的扩张的方法,称之为Category。

@interface ClassA : NSObject {NSString *name_;}@property (nonatomic, copy) NSString *name_;@implementation ClassA@synthesize name_- (void) helloWorld:(NSString *)name {NSLog(@"hello %@ world! from %@", name, self.name_);}@end

5 文件的输入输出

NSString *inputFilePath = [INPUTFILEPATH stringByExpandingTildeInPath];NSString *outputFilePath = [OUTPUTFILEPATH stringByExpandingTildeInPath];NSFileManager *fm = [NSFileManager defaultManager];if ( ![fm fileExistsAtPath:outputFilePath] ) {[fm createFileAtPath:outputFilePath contents:nil attributes:nil];}NSFileHandle *input = [NSFileHandle fileHandleForReadingAtPath:inputFilePath];NSFileHandle *output = [NSFileHandle fileHandleForWritingAtPath:outputFilePath];@try {NSData *data;while( (data = [input readDataOfLength:1024]) && 0 < [data length] ){[output writeData: data];}} @finally {[input closeFile];[output closeFile];}

以下语法特性,读者如果知道的话会更好:

高速枚举

使用NSArray或NSDictionar的高速枚举法可以简单地枚举元素

NSArray *array = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];for (id i in array) {//一些处理}
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"key1",@"value2", @"key2",@"value3", @"key3",nil];// 用key来做循环的场合for (id i in [dictionary keyEnumerator]) {// 一些处理}// 用值来做循环的场合for (id i in [dictionary objectEnumerator]) {// 一些处理}

用临时变量id来做是可以的,不过指明Key的类型这种方法也不错。

for (NSString *k in [dictionary keyEnumerator]) { // 处理}

Category
Category可以在已有的类中追加一个方法

@interface NSString (Decorate)// 定义属于Category的方法- (NSString *) decorateWithString:(NSString *)string;@end@implementation NSString (Decorate)- (NSString *) decorateWithString:(NSString *)string {return [NSString stringWithFormat:@"%@%@%@", string, self, string];}@endNSLog(@"test: %@",[@"[MSG]" decorateWithString:@"**"]); // **[MSG]**

Protocol
类如果声明为符合某种Protocol的话,就要按照Protocol所规定的方法来实现这个类。Protocol和Java中的Interface类似。
Property
Property提供了访问类中成员变量的一种方法。
虽然在使用的时候你应该知道更多关于它的知识,但在这里我们只举一个例子。

@property (nonatomic, retain) NSArray *array_;

如果要对像上面那样声明retain的property赋值的话,如果不通过accessor来访问,那么就无法retain。

- (id)initWithParam:(NSArray *)array {if (self = [super init]) {array_ = array; // 无法retainself.array_ = array; // 可以retain}return self;}- (void)dealloc {[array_ release];[super dealloc];}
0 0
原创粉丝点击