用Objective-C代码失意(Frustrated with Objective-c code)

2019-09-28 17:56发布

嗯,我用深入浅出iPhone开发(O'Reilly)一开始有iPod / iPhone编程和我打字码出书。 有两个问题,一个是编程有关,另一种是不。

  • 我不明白的Objective-C的方法的格式。 现在我得到的一些错误的基础上,从书的源代码。 这使我对我的下一个问题。

  • 有些代码是马车。 我想是这样,因为我不能让代码而不需要修改它运行。 这本书有中,因为它是第一个版本和诸如此类的文字一些错别字,但可能我的“固定”的代码有什么关系呢?

所以... 我在哪里可以了解更多有关Objective-C的方法,它们在结构上和在返回类型和参数去的方面是如何工作的?

对于那些书,我在朝着开始InstaTweet应用程序的中间。

谢谢。

Answer 1:

也许一个“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和感受辉煌。 挂在那里!



Answer 2:

一个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。



Answer 3:

看看苹果公司的简介目标C 。

的基本方法的格式是

-(ReturnType *)methodName:(VariableType *)variableName{

}

例如:

-(NSString *)giveMeANewStringFromAnOldString:(NSString *)oldString{

}

您也应该检查这本书的网站的勘误表。



Answer 4:

我没有你做同样的事情。 我拿起深入浅出iPhone开发的书太(覆盖3.1 SDK)。

我通过这一切的教程跑,发现只有1导致我的应用程序无法正常工作(我记下了它在我的书,但现在我不能找到它...)错误。

所以之后,我意识到正是你所用的语法有同样的问题。

我由斯蒂芬·G·库奇拿起“在Objective-C 2.0开发”。 (这简直是辉煌的。)这本书是明确和简洁。 我甚至没有撑过这本书的25%,我的所有问题都得到答复。

阅读Objective-C代码把我几个月,因为我已经习惯到不同的语法,我的大脑花了一些时间来适应客观-C预期的方式。

什么我发现是,一旦你环绕它你的大脑Objective-C代码变得很可读。 上述卡尔Norum时的例子是可读性的重要的论证。

[object addX:4 toY:7];

它没有得到太多比这更可读!

还有些术语是有点不同。 “信息对象”与“调用方法”把我几个星期了。

我希望这本书的建议可以帮助你,这真的帮了我很多。



Answer 5:

有苹果一些伟大的学习资源:

学习的Objective-C:入门

可可编码指南

祝好运!



Answer 6:

阅读的Mac(R)OS X(第3版)可可(R)程序 ,它是适用于Mac和Cocoa圣经。

我还没有与它的任何问题,但请记住,API永远向前所以可能会有轻微的更新/改变。 但我没有发现任何可能阻止我完成所有的代码示例和练习。

这是阅读本书。



文章来源: Frustrated with Objective-c code