1.没有权限读取文件夹 The file “Homework2” couldn’t be opened because you don’t have permission to view it.   —>不能对文件夹进行文件的操作,例如读取文件内容     2.C函数运行时链接错误 变量名和函数名混淆使用了,导致调用错误     3.运行iOS模拟器发生Domain = NSPOSIXErrorDomain, Code = 22 错误 删除Xcode缓存,删除/Users/hellovoidwo…
Foundation框架—集合 一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组. C语言数组有一个缺点即数组中只能存放同种数据类型的元素. OC数组只能存放OC对象,不能存放非OC对象,如int,结构体和枚举等 OC数组实际是指针数组-oc对象是用指针指向的,数组实际存放的是指向oc对象的指针. (2)NSArray的创建 //实例方法 NSA…
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文件就可以了. 即#import<foundation/foundation.h> 补充:core foundation框架相对底层,里面的代码几乎都是c语言的,而foundation中是OC的. 二.常用的结构体介绍及简单使用 常用的结构体: (一)NSRang的基本使用 创建变量 (二)NSPo…
一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableArray:可变数组 2) NSSet: NSMutableSet: 3) NSDictiorary NSMutableDictiorary 其它: NSDate NSObject 二.NSString和NSMutableString的使用与注意 (一)6种创建字符串的形式 (二)使用注意 (1)字符…
前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 Foundation .Core Data 和 AppKit(Application Kit)框架.用于 Mac OS X 设备上的应用程序开发. Cocoa Touch :是指 Foundation .Core Data 和 UIKit 框架.用于 iOS 设备上的应用程序开发. 1.Found…
注意: 1.变量名和函数名不要混淆调用 2.不要对文件夹进行文件的操作,没有权限 3.递归调用注意初始化变量   // // main.m // CodeLineCount // // Created by hellovoidworld on 14-11-18. // Copyright (c) 2014年 com.hellovoidworld. All rights reserved. // #import <Foundation/Foundation.h> // 计算文件夹或文件内所有代码…
NSDate:是OC中处理日期时间的一个类,可以用来表示时间 获取当前的时间 NSDate *d = [NSDate date]; 创建日期时间对象 NSLog输出是当前时间 格林时间 格式化显示时间 NSDate *d1 = [NSDate date]; NSLog(@"%@", d1); // 格式化日期,时间 // NSDateFormatter 日期格式化 /* yyyy 表示四位的年份 MM 表示2位的月份 dd 表示2位的天数 HH 表示24小时制的小时 hh 12小时制…
A. 目录管理 NSFileManager*manager = [NSFileManagerdefaultManager];//单例模式 // 1.获取文件属性 NSString *path = @"/Users/hellovoidworld/desktop/oc/test20141121.txt"; NSFileManager *manager = [NSFileManagerdefaultManager]; // 单例模式 NSDictionary *attrDic = [mana…
NSNumber能够包装基本数据类型称为OC对象,是因为继承了NSValue 包装结构体成OC对象 1.自带结构体 void value() { CGPoint point = CGPointMake(, ); NSValue *obj = [NSValue valueWithPoint:point]; NSLog(@"%@", obj); CGPoint p1 = [obj pointValue]; BOOL result = CGPointEqualToPoint(point, p…
1.概念 NSArray,NSDictionary只能放OC对象,不能放入基本数据类型 必须使用包装类NSNumber,把基本数据类型包装成OC对象 不支持自动包装解包   void number() { NSNumber *number = [NSNumber numberWithInt:]; NSMutableArray *array = [NSMutableArray array]; [array addObject:number]; NSLog(@"%@", array); N…
可变的NSArray,可以随意添加OC对象   1.创建 void arrayCreate() { NSMutableArray *array = [NSMutableArray arrayWithObject:"]; [array addObject:"]; [array addObject:"]; [array removeObject:"]; NSLog(@"%@", array); }   NSMutableArray 不能使用@[]创建…
1.派生 voidarrayNew() { NSArray*array = [NSArrayarrayWithObjects:",nil]; NSArray*array2 = [arrayarrayByAddingObject:"]; NSLog(@"%@", array2); NSArray*array4 = [NSArrayarrayWithObjects:",nil]; NSRangerange =NSMakeRange(,); NSArray*ar…
NSArray是不可变的,不能先创建再添加元素 NSArray可以放入任何OC对象,但不能放入基本数据类型.结构体.枚举等非OC对象 不能存储nil   A.常用方法1 创建 返回用量 是否含有某元素 最后的元素 取得某位置的元素 当一个对象放入数组的时候,这个对象的计数器加1 #pragma mark create a array void arrayCreate() { //Create an empty array NSArray *array = [NSArray array]; //C…
  void exportString() { NSString *str = @"Hello, 坑爹"; NSString *path = @"/Users/hellovoidworld/Study/Foundation/NSString/abc.txt"; NSError *error; [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error]; if…
A. 不可变字符串 void stringCreate() { //Don't need to release memory by this way NSString *str1 = @"String Sample"; NSString *str2 = [[NSString alloc] init]; str2 = @"String sample 2"; [str2 release]; NSString *str3 = [[NSString alloc] initW…
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { /* 不可变字符串 1.创建字符串 实例方法(3种) 类方法(3种) 2.不可变字符串: 统计长度(2种) 索引提取 (3种) 比较 (3种) 查照字符串位置(1种) 判断前后缀 转换数字 大小写转换 字符串提取 可变字符串 1.创建可变字符串 2.可变字符串的操作 增(3种)删(1种)改(1种)查 */…
A.集合的手动内存管理 NSArray addObject: 加入的元素执行一次retain removeObject: 被删除的元素执行一次release removeAllObjects: 所有元素执行一次release     B.ARC机制集合内存分析 当一个对象被放入集合中时,会保存它的强指针 当一个对象被从集合中删除的时候,会删除它在集合中的强指针 当集合的指针被置为nil,其中的全部元素指针也会被置为nil   Q:当使用不同的方法初始化集合的时候,出现了不同的回收顺序 @auto…
A.NSSet 跟NSArray一样,不可变 NSArray 自然顺序 NSSet是无序的 NSSet不允许存入重复元素,可以用来过滤重复元素   也有可变的NSMutableSet   B.集合转换 // 1.NSArray 转换成 NSMutableArray NSArray *array = @[@"one", @"two", @"three"]; NSMutableArray *muArray = [NSMutableArrayarray…
使用Class来创建实例 // 18.通过@"Ball"创建一个Ball实例(不可以使用[[Ball alloc] init]创建) NSString *className = @"Ball"; Class class = NSClassFromString(className); Ball *ball = [[class alloc] init]; ball.color = ColorWhite; NSLog(@"通过class创建了一个Ball %@&…
一个对象使用copy或mutableCopy方法可以创建对象的副本 1.copy 需要实现NSCopying协议 创建出来的是不可变副本,如NSString, NSArray, NSDictionary   (1)不可变对象调用copy  (NSSring除外) 不会产生新的对象,而是返回对象本身,相当于retain,计数器+1 属于浅拷贝 NSArray *arr1 = [NSArray arrayWithObjects:@"张三", @"李四", nil]; N…
1.判断某个对象是否属于一个类 Student *stu = [[[Student alloc] init] autorelease]; BOOL result= [stu isKindOfClass:[Person class]]; NSLog(@"%i", result); //判断对象是否属于某个类,不包括子类 NSLog(@"%i",[stu isMemberOfClass:[Student class]]); NSLog(@"%i",[…
日期处理类 定义 时间间隔计算 时间比较,返回其一 时间格式化 void dateCreate() { //date return current time NSDate *date = [NSDate date]; NSLog(@"%@", date); //+ 10 sec date = [NSDate dateWithTimeIntervalSinceNow:]; NSLog(@"%@", date); //1970-1-1 00:00:00 + 10 sec…
在NSDictionary中,nil代表结束,允许存入 使用NSNull代替   int main(int argc, const char * argv[]) { @autoreleasepool { NSNull *n = [NSNull null]; NSLog(@"%@", n); //单例模式生成的null NSNull *n1 = [NSNull null]; NSNull *n2 = [NSNull null]; NSNull *n3 = [NSNull null]; N…
  void dicUse() { NSMutableDictionary *dic = [NSMutableDictionary dictionary]; Student *stu1 = [Student studentWithName:@"Simon"]; NSLog(@"stu1:%zi", [stu1 retainCount]); [dic setObject:stu1 forKey:@"k1"]; NSLog(@"stu1:%…
通过唯一的key找到相应的value,类似于Map NSDictionary是不可变的   1.创建 void dicCreate() { //Immutable // NSDictionary *dic = [NSDictionary dictionary]; NSDictionary *dic = [NSDictionary dictionaryWithObject:@"Simon" forKey:@"name"]; dic = [NSDictionary di…
NSString是不可变的 NSMutableString是可变字符串   1.初始化 2.串联字符串 3.替换字符串 4.插入字符串 5.删除字符串   #pragma mark buffer string create void stringCreate() { NSMutableString *mutStr = [[NSMutableString alloc] initWithCapacity:]; [mutStr setString:@"Go!"]; NSLog(@"…
         NSString *s1 = ";   1.比较 使用 == 号比较的是字符串地址 NSString *s4 = @"abcdefg"; NSString *s4_sub = [s4 substringToIndex:]; NSLog(@"subStr:%@, %d", s4_sub, @"abc" == s4_sub); // abc, 0 NSLog(@"subStr:%@, %d", s4_s…
使用函数改变NSString void changeStr2(NSString **str3) { *str3 = "; } int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = "; changeStr2(&str); NSLog(@"The string is %@", str); } ; }   若不适用指向指针的指针作为参数,即使用普通指针,就仅仅改变…
底层封装是使用了typedef定义的结构体 typedef struct _NSString{ xxx xxx } NSString;   1. NSRange 结构体 #注意结构体不是对象 3种定义方式 typedef struct _NSRange{ int location; int length; } NSRange; (1) 先声明后赋值 (2)同时声明.按照顺序赋值 (3)使用c函数,同时声明.赋值,并指定赋值的成员变量名 NSRange range = {, }; NSRange…
前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java中集合的思想,应该还有一个Set,是的,OC中有NSSet和NSMutableSet这两个类的,但是,这里我为什么不单独介绍了呢?因为他的操作和NSArray是非常相似的,只是他和NSArray有一个区别就是他不能放重复数据,而且他也是无序的.其他没什么了,所以就不单独介绍了,而且NSSet在后面的…