我在读一本书——大书呆子牧场iOS编程.
你能解释一下如何把这个代码转换成括号符号吗?
self.display.text = [self.display.text stringByAppendingString:digit];
据我所知,应该是:
[[self display] setText]:[[[self display] text] stringByAppendingString:digit];
对吗?
我在读一本书——大书呆子牧场iOS编程.
你能解释一下如何把这个代码转换成括号符号吗?
self.display.text = [self.display.text stringByAppendingString:digit];
据我所知,应该是:
[[self display] setText]:[[[self display] text] stringByAppendingString:digit];
对吗?
这是个人 Select 的问题.有人认为,点符号使消息发送(方法被调用)变得不明确,因为它看起来就像C风格的 struct 元素访问.另一方面的论点是,点符号更容易打字,更容易阅读,更简洁.
作为一个在引入点符号之前(在Objective-C2.0中)就开始编写Objective-C的人,我可以理解双方的论点,但我更喜欢自己使用点符号.也就是说,我确实认为,对于从Objective-C开始的人来说,理解点符号语法在编译时被转换为标准的访问器方法调用是很重要的.我认为《大书呆子牧场》一书的作者可能也有类似的态度,这也是他们决定在书中使用括号符号的主要原因.
总之,做你最喜欢的事.两者都是有效的,两者之间的 Select 本质上是风格的问题.无论您 Select 哪种,请确保您了解这两种样式都会生成等效的编译代码.
编辑:我忘了回答关于将点符号转换为括号语法的问题.你很接近,但你写的是错误的,不会真正编译.应该是:[[self display] setText:[[[self display] text] stringByAppendingString:digit]]
.如果我写的话,我会把它分成两行(其实我会用点符号):
NSString *stringWithDigit = [[[self display] text] stringByAppendingString:digit];
[[self display] setText:stringWithDigit];
编辑2:我写这个答案已经三年多了.我只想指出的是,这些天来,越来越多的Apple framework类将以前的常规方法转换为@properties(例如-[NSArray count]
),可能是为了更好地进行快速互操作.这让我比以前更自由地使用点符号.