C#接口和Objective-C @prototypes是否相同?

8 浏览
0 Comments

C#接口和Objective-C @prototypes是否相同?

1)C#接口和Objective-C的@prototypes是否相同?当原型内的函数是可选的时候,它们什么时候是强制性的?

2)@property (nonatomic, retain) 的意义是什么?

我是Objective-C环境的新手,对这些概念感到困惑。请帮助我解决这个问题。

0
0 Comments

原因:问题的提出是因为读者想知道C#接口和Objective-C @protocol是否相同。

解决方法:根据回答者的回答,可以得出结论C#接口和Objective-C @protocol几乎是相同的,唯一的区别在于@protocol允许指定一些可选的方法,即不强制实现的方法。

C#接口和Objective-C @protocol的相似之处

我相信你指的是协议,使用带有符号的正式协议几乎与C#接口完全相同,唯一的区别是协议允许你指定一些可选的方法,也就是一些你不强制实现的方法。

属性是类的实例变量的等价物,并且它可以用来自动生成该属性的setter和getter方法。它可以声明为原子性或非原子性,这意味着setter和getter方法是否作为单个操作执行。它还可以声明为retain、copy或assign。retain意味着实例变量在生成的setter方法中会发送retain消息给对象,copy意味着setter方法将克隆实例并发送retain消息给它,而assign意味着值只是被赋值而不发送retain消息。

希望这能帮到你。

感谢你的回复,请问你能推荐包含所有这些基本概念的书吗?我在谷歌上搜索了但没有找到包含这些概念的书。

0
0 Comments

C#接口和Objective-C @prototypes是否相同?

在这个问题中,原因是用户对C#接口和Objective-C @prototypes之间的相似性和区别有疑问。解决方法是提供一本包含这些基本概念的书籍。

首先,作者假设用户在提问中指的是Objective-C中的protocols。在C#(和Java)中,protocols类似于接口,但语义上有所不同。在Objective-C中,接收消息的方法不需要实现该方法,而是会忽略该消息。此外,在C#中,可以对nil(在C#中为null)发送消息(即调用方法),而不会发生任何事情。

此外,作者还解释了"(nonatmoic, retain)"这个声明的含义。它是一个属性的声明(一个getter方法和一个setter方法的配对)。可以使用关键字自动实现它们。其中,nonatomic表示不需要实现线程安全,retain表示在setter方法中应该增加/减少对象的引用计数。

最后,用户感谢了回复,并询问是否有包含这些基本概念的书籍。用户在谷歌上搜索了相关概念的书籍,但没有找到合适的。

希望这篇文章解答了用户对C#接口和Objective-C @prototypes之间相似性和区别的疑问,并提供了一本包含这些基本概念的书籍。

0
0 Comments

问题的原因是用户想要了解C#接口和Objective-C @prototypes是否相同,以及在原型中的函数何时是可选的,何时是必需的。解决方法是提供相关的信息和指导。

C#接口和Objective-C的@prototypes基本上是相同的。Objective-C使用协议(protocols),就像C#使用接口(interfaces)一样。默认情况下,你列出的所有方法都是必需的(这意味着如果编译器没有看到对象实现该方法,编译器会报错,但程序仍然可以编译)。

对于"(nonatomic, retain)"的含义,"nonatomic"意味着属性的读写操作不是线程安全的,但它能提高速度。如果你需要一个线程安全的属性,必须使用"atomic"(只需省略"nonatomic",因为"atomic"是默认值)。"retain"意味着在设置属性时,retainCount会自动增加,所以你不必自己执行"[someVariable retain]"调用。这对内存管理有重要的影响,所以你经常会看到synthesize调用与下划线的实例变量配合使用,例如"myObject = _myObject;"。

关于推荐的书籍,任何初学者的Objective-C书籍都应该涵盖有关的基本概念。属性和内存管理也应该被涵盖,因为它们涉及Objective-C中大部分类的知识。我没有阅读过任何Objective-C的书籍,我更喜欢通过互联网学习。由于Objective-C在不断变化,一些印刷材料可能已经过时或不完整。这个网页(http://www.otierney.net/objective-c.html)虽然比较简短,但涵盖了很多Objective-C的基础知识,包括内存管理和协议。

需要注意的是,无论是"atomic"还是"nonatomic"都不是线程安全的,可以参考这个回答了解更多信息(http://stackoverflow.com/questions/12347236)。

0