我有一个关于语法的简单问题:
NSString* inpword1 = @"eight";
NSString* outword1 = [lookFor theKey:inpword1]; // This line does not compile!!!!
-(NSString*) lookFor: theKey: (NSString*) key; // in the Spec (translator.h)
-(NSString*) lookFor: theKey: (NSString*) key; // in the Body (translator.m)
{
NSString* entry = [[NSString alloc] init];
entry = [dictionary objectForKey:key];
return entry;
}
除了一行外,所有内容都会编译。 如果语法存在明显问题,我无法弄明白。 任何帮助,将不胜感激。我能够正确地在字典中查找单词 但是当我使用lookFor作为包装器时,我似乎无法为调用获得正确的语法。
答案 0 :(得分:2)
修改强>
在指出语法错误之前,我必须明确表示你不应该创建自己的函数来检索密钥的对象。这已经为您完成,只需致电[someDictionary objectForKey:@"YourKey"];
现在我们的语法问题 - 我在这里看到了3个主要问题:
NSString* entry = [[NSString alloc] init]; //this allocation is useless and will result in a memory leak because later, you assign it with an object from the dictionary:
[lookFor theKey:inpword1]; //This is just a wrong way to call a function:
-(NSString*) lookFor: theKey: (NSString*) key //this is just a wrong way to declare a function.
NSString* inpword1 = @"eight";
NSString* outword1 = [self lookForKeyInDict:dict TheKey:inpword1];
-(NSString*) lookForKeyInDict:(NSDictionary*)dict TheKey:(NSString*) key;
-(NSString*) lookForKeyInDict:(NSDictionary*)dict TheKey:(NSString*) key
{
NSString* entry;
entry = [dict objectForKey:key];
return entry;
}
答案 1 :(得分:2)
声明中:
NSString* outword1 = [lookFor theKey:inpword1]; // This line does not compile!!!!
lookFor
是某个对象的实例。
theKey
是发送给对象的消息。
班级lookFor
的方法thekey
的类型必须为NSString *
此外,Objective-C消息结构似乎存在混淆,考虑阅读Objective-C上的Apple文档,它将为您节省大量时间。
答案 2 :(得分:2)
语法[lookFor theKey:inpword1];
表示您使用theKey:
作为名为inpword1
的对象的参数调用方法lookFor
。
语法-(NSString*) lookFor: theKey: (NSString*) key;
声明了一个方法lookFor:theKey:
,该方法将NSString*
称为key
作为参数并返回NSString*
。不幸的是,在lookFor
之后使用冒号意味着当您尝试调用此方法时,theKey
将被视为参数,您将收到未声明的错误。除非引入参数,否则不应在方法名称中使用冒号,与theKey:
一样。
所以,简而言之,我只记得:
[
之后是您正在呼叫的对象的名称。