嗯,我用深入浅出iPhone开发(O'Reilly)一开始有iPod / iPhone编程和我打字码出书。 有两个问题,一个是编程有关,另一种是不。
所以... 我在哪里可以了解更多有关Objective-C的方法,它们在结构上和在返回类型和参数去的方面是如何工作的?
对于那些书,我在朝着开始InstaTweet应用程序的中间。
谢谢。
也许一个“C类”的语言和OBJ-C之间的比较将是有益的 - 让我们去与Java。 想象一下,一个setBackgroundColor方法的Rectangle类。 我们假设我们有一个矩形的实例调用矩形。
在Java中,方法的签名很可能会
public void setBackgroundColor(int r, int g, int b) { ... }
在Objective-C,参数是方法签名的一部分,所以它可能是
- (void)setBackgroundColorWithRed:(int)r green:(int)g blue:(int)b;
该“ - ”表示这是在Rectangle类的实例方法。 (空隙)是该方法的返回类型。 然后来的论点。 每个结肠定义的参数,其被输入(每个arg是(在此示例INT))。
让我们比较调用这些方法。 Java的:
rect.setBackgroundColor(255, 255, 0);
OBJ-C:
[rect setBackgroundColorWithRed:255 green:255 blue:0];
很多人绊倒OBJ-C的语法 - 你并不孤单。 希望这个比较将让事情更清晰。 这也体现了Objective-C中的语言实力:在通话时间,很显然你的论点是什么。 如果我在读代码,看到被调用Java方法,它不会是显而易见的论据是红色,蓝色和绿色。 在OBJ-C,这是痛苦的明显,我们正在设置单独的颜色值。 当然,大多数开发商能猜出三个参数的方法为setColor的,但更复杂的方法会比较混乱。 以下是在Java和目标c定义一个更复杂的方法:
static Dog createDog( String name
, int age
, boolean isNeutered
, String ownerName
);
+ (Dog *)createDogNamed:(NSString *)name
age: (int) age
neutered:(BOOL) isNeutered
owner: (NSString *) owner;
在通话时间:
Dog.createDog("Fluffy", 2, true, "Moshe");
[Dog createDogNamed:@"Fluffy" age:2 neutered:YES owner:@"Moshe"];
Objective-C的更加详细,但更可读。 在Java例子,它不是真正清楚什么是“2”和“真正的”参数的含义。 Objective-C的恰如英语。
其他人已经发布的链接更深入的指南,但我希望这可以让你过去的句法绊脚石足以使链接有用。 我很高兴回答你有更具体的问题。 根据我的经验,OBJ-C新手有一个非常艰难的时间与语法,然后单击 S和感受辉煌。 挂在那里!
一个Objective-C方法的定义是非常简单的。 这是非常类似于一个常规的C函数调用定义,其实。 大除了是命名参数的选项。 下面是一个例子:
-(int)addX:(int)x toY:(int)y
{
return x + y;
}
您可以通过发送消息给适当的对象使用:
int z = [object addX:x toY:y];
在这种情况下,我给出的参数和参数相同的名称,要清楚事情怎么排队。 你可以很容易做到:
int z = [object addX:4 toY:7];
而在这之后, z
将是11。
看看苹果公司的简介目标C 。
的基本方法的格式是
-(ReturnType *)methodName:(VariableType *)variableName{
}
例如:
-(NSString *)giveMeANewStringFromAnOldString:(NSString *)oldString{
}
您也应该检查这本书的网站的勘误表。
我没有你做同样的事情。 我拿起深入浅出iPhone开发的书太(覆盖3.1 SDK)。
我通过这一切的教程跑,发现只有1导致我的应用程序无法正常工作(我记下了它在我的书,但现在我不能找到它...)错误。
所以之后,我意识到正是你所用的语法有同样的问题。
我由斯蒂芬·G·库奇拿起“在Objective-C 2.0开发”。 (这简直是辉煌的。)这本书是明确和简洁。 我甚至没有撑过这本书的25%,我的所有问题都得到答复。
阅读Objective-C代码把我几个月,因为我已经习惯到不同的语法,我的大脑花了一些时间来适应客观-C预期的方式。
什么我发现是,一旦你环绕它你的大脑Objective-C代码变得很可读。 上述卡尔Norum时的例子是可读性的重要的论证。
[object addX:4 toY:7];
它没有得到太多比这更可读!
还有些术语是有点不同。 “信息对象”与“调用方法”把我几个星期了。
我希望这本书的建议可以帮助你,这真的帮了我很多。
阅读的Mac(R)OS X(第3版)可可(R)程序 ,它是适用于Mac和Cocoa圣经。
我还没有与它的任何问题,但请记住,API永远向前所以可能会有轻微的更新/改变。 但我没有发现任何可能阻止我完成所有的代码示例和练习。
这是阅读本书。