最近有个项目为了升级ios版本, 发现ios不能正常使用,经过调查之后,发现了下面的问题。
Object-c ios7中方法定义的注意点
下面的方法
-(id) initWithController: (UIViewController *)controller level: (NSInteger)level title: (NSString *)title
{
self = [self initWithFrame:CGRectMake(0, 0, 0, 0)];
[self setController:controller];
[self setShowLevel:level];
[self setTitle:title forState:0];
return self;
}
注意上面红色的文字
变量名和变量的指名是一样的,在ios6的时候没有问题页面可以正常的显示,但是在ios7的ipad里面会出现无法识别哪个是变量的问题。
修正后:
-(id) initWithController: (UIViewController *)controller level: (NSInteger)myLevel title: (NSString *)myTitle
{
self = [self initWithFrame:CGRectMake(0, 0, 0, 0)];
[self setController:controller];
[self setShowLevel:myLevel];
[self setTitle:myTitle forState:0];
return self;
}
总结:尽量不要做这种即使人去理解也有可能出现疑问的写法,有时候编辑器也不能完全准确的解析。其实任何的语言都是一样的, 我们是为了写出可以用的代码,不是为了测试本身语言的bug,为了减少项目的bug,写代码的时候尽量注意这些小地方。
以供参考