关于Xcode iOS 7的常见问题目标C

我正在关注iTunes U上的斯坦福大学开发iOS 7课程2013 2014(仅供参考),而且我对Objective C语言有一些一般性问题。谢谢你的帮助!关于Xcode iOS 7的常见问题目标C

问题01 这是我对@synthesize的了解: 使用最新版本的Xcode,不需要执行@synthesize来声明setter或getter。如果getter和setter保持默认状态,它会自动为程序员完成。然而,我已经被教过了,我需要在重写getter和setter时声明合成。 我的问题是:为什么只有当两者都被覆盖?对于我来说,当只有一个需要被覆盖的时候,你需要声明合成已经变得更有意义了。

问题02

- (void)addCard:(Card *)card atTop:(BOOL)atTop; 

- (void)addCard:(Card *)card;

是在我下面的过程中使用的2种不同的公共方法。 问:我需要说明这两个方法是两种。我不能只使用第一个,同时指定2个不同的代码块来执行,通过IF ELSE clausule BOOL是YES还是NO?这不会是完全一样的结果吗?

问题03

有只是一个单一的视图一个相当简单的程序,我发现我并不需要公开指定我viewcontroller.h任何方法。我认为这只有在您的程序更加复杂时才需要,并且包含多个MVC,控制器需要相互“说话”。这是一个正确的假设,一般来说,当做一个适当的MVC为基础的程序?

我感谢您的时间和精力。对不起,如果我的问题看起来很基本或者没有完全意义。我在iOS学习路径阶段1,有很少的OOP经验。

回答:

问题1:

你是对的这件事。如果你重写getter和setter,那么你需要@synthesize属性。不过,我必须进一步寻找原因。

问题2:

是的,你可以只是第一种方法。然而,第二种方法是有一个方便,通常会包含代码这样的事情...

- (void)addCard:(Card *)card 

{

[self addCard:card atTop:YES];

}

然后指定的方法会做这样的事情......

- (void)addCard:(Card *)card atTop:(BOOL)atTop 

{

if (atTop) {

// something to add card to top.

} else {

// something to add card at bottom.

}

}

即它只是路线该方法调用“指定”方法,但使用BOOL的默认值。

问题3:

.h文件是存在的作为接口的文件。它将类似于服务器上的一组Web服务。该类可以在内部完成各种各样的任务,但只需要在.h接口文件中声明一些东西,如果需要从外部访问它们。

例如,您可能有一个名为Car的类。它可能有一个名为accelerator的按钮,它可以访问内部方法并提高速度。这些都不需要暴露于外部类别。

但是,同一辆车可能有一个名为colour的属性或称为addFuel的方法。这些需要在外部可用,以便用户可以看到颜色并添加燃料。这两个都需要进入.h文件。

我希望这是有道理的。

回答:

问题01

编辑)您需要@synthesize告诉编译器为您创建的实例变量(如:_myString)。您也可以手动声明伊娃。

问题02

你可以只声明的第一个肯定的。其实第二个只是一个速记方法,为atTop提供了一个默认值。在大多数情况下,你会实现完全按照自己的解释方法:

- (void)addCard:(Card *)card atTop:(BOOL)atTop { 

if (atTop) {

// atTop == YES

}

else {

// atTop == NO

}

}

- (void)addCard:(Card *)card {

[self addCard:card atTop:YES]; // or atTop:NO, depending of the default value you want to use

}

问题03

再次,是的。您的视图控制器应该尽可能少地暴露属性和方法,并且公开只有应用程序可以使用的其他应用程序才能使用的东西。所以在单个VC /单视图程序的情况下,具有空的VC接口是正常的。

回答:

问题1:我已经被教过了,我需要声明合成时 覆盖吸气剂和二流子。我的问题是:为什么只有 当两个被覆盖?对于我而言,当你需要重写 时, 需要声明已经合成了吗?

一旦你使用@synthesize你使用的是编译器提供的setter/getter。如果你创建你的setter/getter没有synthesize那么你需要写两个方法,如果你有readwrite属性。


问题2:我是否需要注明这两个为2个人的方法。 我不能只使用第一个,同时指定2个不同的 代码块,通过IF ELSE clausule判断BOOL是否为 YES或NO?这不会是完全一样的结果吗?

是的,有两种不同的方法是很好的。由于这两个参数有所不同,调用者将知道该方法内发生了什么。如果你想放置if-else,为此你需要一个ivar或全局值来检查,但是如果你通过BOOL则不需要它。


问题3:有,只是一个单一视图一个相当简单的程序,我发现我 不需要公开指定我viewcontroller.h任何方法。 I 认为只有当程序更加复杂时才需要这样做,并且 包含多个MVC,其中控制器需要互相“说” 。这是一个正确的假设,一般来说,当制作一个合适的基于MVC的程序时,可以使用 ?

即使您没有任何复杂但始终遵循MVC的体系结构。

iOS编程中的控制器通常是指视图控制器。将视图控制器视为模型和视图之间的桥梁。该控制器解释一方发生了什么,并根据需要使用该信息来改变另一方。例如,如果用户更改视图中的某个字段,控制器将确保模型作出响应更改。如果模型获取新数据,控制器会通知视图来反映它。

以上是 关于Xcode iOS 7的常见问题目标C 的全部内容, 来源链接: utcz.com/qa/262571.html

回到顶部