objective-c 快速学习1-语言特色

1.类的+ 方法。

一个贴心的设计。可以让某些和类相关的方法,直接放到类中,避免放入到全局中,污染全局空间。

2.非基本类型都是强制放入堆中。

让思想统一,比起c++的自由所带来的混乱,可谓功德无量。

3.  还是c#做的好。有关键字语法糖。

对于返回多个非指针类型,就临时用下指针吧。而返回指针类型。就用指针的指针。

+(void)GetIndexFromCode:(NSString *)code province:(NSInteger *)province city:(NSInteger*)city allcitys:(NSMutableArray<NSMutableArray<struct_city*>*> *)allcitys
{
int pc=(int)allcitys.count;
for (int i=0; i<pc; i++) {
int cc=(int)allcitys[i].count;

for(int j=0;j<cc;j++)
{
if(allcitys[i][j].codeID==code)
{
*city=j;
*province=i;
}
}
}
}

4.构造函数相关。

initwith

  有时候我们重写父类的init方法时不注意将init后面的第一个字母写成了小写,在这个方法里面又调用父类的初始化方法(self = [super init];)时会报错,错误信息如下:error:Cannot assign to 'self' outside of a method in the init family

原因:只能在init方法中给self赋值,Xcode判断是否为init方法规则:方法返回id,并且名字以init+大写字母开头+其他  为准则。例如:- (id) initWithXXX;

ios 真是一个“灵活的”语言。

禁用默认构造函数

- (instancetype)init UNAVAILABLE_ATTRIBUTE;
+ (instancetype)new UNAVAILABLE_ATTRIBUTE;
原文地址:https://www.cnblogs.com/lsfv/p/9132865.html