声明类方法:
@interface MyClass:NSObject{
// 类变量声明
}
// 类属性声明
// 类方法和声明
@end
实现类:
@implementation MyClass
// 类方法定义
@end
创建对象
MyClass *objectName = [[MyClass alloc]init] ;
声明方法,对象方法用-,类方法用+
-(returnType)methodName:(typeName) variable1 :(typeName)variable2;
例子:
-(void)addA:(CGfloat)a andB:(CGfloat)b;
调用:
[self addA:10 andB 20];
协议,类似java,c#里的接口
protocol语法
@protocol protocolName
@required
//方法声明
@optional
//方法声明
@end
@required 用于表示协议中该方法必须在类中实现,默认[如果不加则默认为@required]
@optional 用于表示协议中该方法在类中可以选择实现
conformsToProtocol 方法用于判断某个类是否遵循某个协议
bool flag1=[child conformsToProtocol:@protocol(NewProtocol)];
数据类型
NSString 字符串,字符串转整数 :str.intValue。整数转字符串:[NSString stringWithFormat:@"%d", intValue]
CGfloat 浮点型
NSInteger 整型
BOOL 布尔
打印日志:
NSLog(@"");
数组
NSMutableArray :可变数组
NSArray:不可变数组
NSMutableArray *aMutableArray = [[NSMutableArray alloc]init];
[anArray addObject:@"firstobject"];
NSArray *aImmutableArray = [[NSArray alloc]
initWithObjects:@"firstObject",nil];
字典
NSMutableDictionary:可变字典
NSDictionary:不可变字典
NSMutableDictionary*aMutableDictionary = [[NSMutableArray alloc]init];
[aMutableDictionary setObject:@"firstobject" forKey:@"aKey"];
NSDictionary*aImmutableDictionary= [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects:
@"firstObject",nil] forKeys:[ NSArray arrayWithObjects:@"aKey"]];
通过dictionary赋值对象的属性,需要key跟属性名相同
setValuesForKeysWithDictionary
instancetype :未知类型对象,对象的类型是具体的
id:未知类型对象
instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;
instancetype只能作为返回值,不能像id那样作为参数
dispatch_once_t 在App生命周期里,只执行一次。
});
block语法,类似于函数指针,多用于定义回调函数
int (^block) (int x, int y) = ^(int x, int y) {
return x*y;
}
NSLog("%d", block(1,2));
ios调试
可以使用po或者p进行变量输出,打印变量内容
po 变量名
po NSHomeDirectory() 打印项目根目录
异常处理
@try
{
}
@catch(NSException *e) {
NSLog(@"exception %@", e)
}
万能指针id,可以指向任何对象,调用对象的方法,但是不能使用点语法。
instancetype :当前类的类型,只能作为方法的返回值类型
respondsToSelector: @selector(方法名) 可以判断一个对象里是否存在某个方法
[Persion new] == [[Persion alloc] init]
init 是初始化方法,重写init方法,需要先调用父类init方法([super init])
NSString 常用方法
str = [NSString stringWithFormat:@"%@aaa", @"b"]
str.length
[str charactarAtIndex: index]
[str1 isEqualToString:str2]
BOOL res = [str1 writeToFile:@"/User/test/aaa.txt" atomically:NO encoding:NSUTF8StringEncoding error:&err]
NSString str = [NSString stringWIthContentOfFile:@"/Users/test/aaa.txt" encoding:NSUTF8StringEncoding error:&err]
使用URL地址读取内容
本地file:///Users/test/1.txt
网页:http://aaa/1.txt
NSURL *url = [NSURL URLWithString:@"http://pgres.cn/1"]
[NSString stringWithContentsOfUrl:url encoding:NSUTF8StringEncoding error:&err]
比较字符串大小
NScomparisonResult res = [str1 compare:str2]
判断字符串是否以XX开头
[str hasPrefix:@"XX"]
判断是否以.mp3结尾
[str hasSuffix:@".mp3"]
在str字符串中搜索 @"xx" 出现的范围
NSRange range = [str rangeOfString:@"xx"];
字符串劫取:
[str substringFromIndex:3]//从下标3开始到末尾
[str substringToIndex:3]//从0开始到下标3.
[str sbustringWithRange:range]//从中间截取
字符串替换:
[str stringByReplaceingOccurrencesOfString:@"aaa" withString:@"bbb"] // aaa替换成bbb
//类型转换
str.intValue // 转换整型
去掉字符串前后空格
[str stringByTrimingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
字符串拼接NSMutableString,可以改变对象里的字符串内容。
[str appendFormat:@"%@", "aaa"] 添加字符串
[str appendString: @"aaa"]
数组 NSArray,只能存储OC对象,长度固定,创建后不能新增,无法删除,元素类型是id类型
[NSArray arrayWithObjects:@"10",@"20",@"30",nil]
简写方式:@[@"10",@"20",@"30"]
长度:arr.count
判断是否存在元素:[arr containsObject:@"aa"]
数组转字符串。[arr componentsJoinByString: @"#"]
字符串转数组。[str compontentsSeparateByString:@","]
可变长度数组 NSMutableArray,是NSArray的子类
[arr1 addObject: obj] // 添加元素
[arr1 insertObject: obj atIndex:1];
[arr1 removeObjectAtIndex:1];
[arr1 removeAllObjects];
字典类 NSDictionary,NSMUtableDictionary
NSDictionary *dic = @{@"name":@"aaa", @"age":@18};
dic[@"name"]
遍历:
for (id item in dict)
{
//便利所有的键
}
NSMutableDictionary *dic = [NSMutableDictionary new];
[dic setObject:@"aaa" forKey:@"name"]
[dic removeObjectForKey:@"name"]