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;