我刚开始用Objective-C编程,据我所知它只是部分支持方法重载,因为方法名称的生成方式(参见这个问题).
但是,我的问题是为什么我从未在任何例子中看到过它.下面的代码似乎工作正常,但我见过的任何一种例子,第二个init都会被命名initWithServerName或类似的东西,而不是利用重载.
-(id) init {
self = [super init];
return self;
}
// usually this would be called initWithName or something? but to me it
// seems easier this way because it reminds me of method overloading from C#.
-(id) init: (NSString*)newServerName {
self = [super init];
if(self) {
serverName = [[NSString alloc] initWithString:newServerName];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
这是什么原因?它是否会导致子类中的问题以这种方式命名方法?