【问题标题】:why most of the objects we create in iphone are pointers为什么我们在 iphone 中创建的大多数对象都是指针
【发布时间】:2010-06-15 10:22:43
【问题描述】:

为什么我们在 iphone 中创建的大多数对象都是指针..? 就像我创建 NSString *str、NSMutableDictionary *dict.. 等

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    简答
    因为 Objective-C 对象只能在堆上分配并作为指针操作。

    长答案
    Objective-C 要求类在堆上分配并作为指针操作,因为多态性需要使用指针,因为指向接口的指针总是具有相同的大小,而接口的不同实现可能具有不同的大小。在 C++ 中,可以对类使用自动(堆栈)和动态(堆)存储;但是,在前一种情况下,必须注意切片(当派生类型分配给基类型时,导致对象丢失使其成为派生类型而不是基类型的内容),并且仅使用指针,如Obj-C 消除了这个潜在的陷阱。此外,允许堆栈分配的对象使 Objective-C 现有的引用计数方案变得复杂,并且由于堆栈分配的对象仅存在于创建它们的范围内,因此通常在堆上分配对象,无论如何,等等将对象支持为堆栈分配的值将是边际收益。附带说明一下,我还应该提到,在 Java 和 C# 中,对象同样受限于仅堆分配。

    【讨论】:

    猜你喜欢
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多