首页 前端 ios 正文

object c 笔记

long 2020-08-01 10:08 ios 人气640

声明类方法:

@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生命周期里,只执行一次。

static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init]

    });


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"]



评论
  • 消灭零回复
公众号
小程序
网站统计
  • 文章总数:305
  • 总点击量:179563
  • 评论总数:39
  • 网站运行:919 天