【问题标题】:Does Objective-C have concepts of value/reference type like C#?Objective-C 是否有像 C# 这样的值/引用类型的概念?
【发布时间】:2014-02-26 06:42:40
【问题描述】:

根据在 Google 上的搜索,看起来它没有正式的值/引用类型。如果没有,对应的是什么?它叫什么?是叫‘Obj-C 类和非 Objc-C 类’还是‘静态类型和动态类型’?

但是,对我来说,obj-c 中的 NSString 对象“工作”类似于 C# 中的引用类型。如果在没有'*'的情况下定义它会导致编译错误“Objective-C类的静态分配实例......”

NSString * pstr = [[[NSString alloc] init] autorelease];

一些本地类型,如 NSInteger 或 C 结构,可以在没有“*”的情况下创建,我可以说它像 C# 中的值类型一样“工作”吗?

NSInteger i = 0;

【问题讨论】:

  • 在 C++ 中,对象可以分为创建在栈上的对象和创建在堆上的对象。 Object-C 中有这样的东西吗?

标签: objective-c


【解决方案1】:

所有 Objective-C 对象都由指针访问。从这个意义上说,它们都是引用类型。

一些 Objective-C 类型将对象相等(-isEqual: 方法)定义为指针相等以外的东西。这些类型表现为类似值的类型。此类类型包括 NSString 和 NSNumber。

非 Objective-C 类的类型可以是 C# 意义上的真值类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2015-12-05
    • 1970-01-01
    相关资源
    最近更新 更多