objective-c - 如何在 Objective-C 中使用访问器方法进行指针工作

标签 objective-c ios pointers

基本问题陈述:

我有充分的理由在需要通过引用传递小数的应用程序中进行一些指针幻想。

所以我有一个存储许多小数的类,所以可以说它有一个这样的属性:

@property (nonatomic) double myDecimalValue;

我想通过引用其他类来传递它。

[someOtherObject sendMyDecimalByReference:&myDecimalValue];

但是,问题出现了!实际必须编写的方式(因为它是一个属性)是

[someOtherObject sendMyDecimalByReference:&decimalOrigin.myDecimalValue];

这无法在 Objective-c 中编译

我通过编写以下内容来解决这个问题

- (double *) myDecimalValueRef;

[someOtherObject sendMyDecimalByReference:[decimalOrigin myDecimalValue]];

除了我有几十个这样的小数,我不想为每个值编写那个愚蠢的包装函数。

在 Objective-C 中是否有一种仅使用 Getter 函数来完成此操作的简便方法?

假设我有充分的理由不使用 NSNumber。

谢谢!

最佳答案

您可以直接使用和访问实例变量而不是属性吗?然后它的工作方式与 C 结构成员相同...

@interface SomeClass : NSObject
{
    @public
    double myDecimalValue;
}

// Keep the getter or not, assuming you synthesize it in a way that uses the
// myDecimalValue ivar
@property (nonatomic) double myDecimalValue;

@end

然后你可以这样访问它:

[someOtherObject sendMyDecimalByReference:&decimalOrigin->myDecimalValue];

当然,鲁棒性是有限的,当您实际取消引用该值时,someOtherObject必须保持有效对象,并且如果您有子类/父类(super class),则必须考虑这种设计。 ..

关于objective-c - 如何在 Objective-C 中使用访问器方法进行指针工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765990/

相关文章:

ios - 如何使用自动布局从 IB 访问正确的宽度值

ios - 如何在 Ios 中点击时更改表格单元格的不透明度

ios - 无法在 Swift 3 中启动 Activity Indicator?

c - 将 char** 传递给 void** 函数参数时,与指针类型不兼容的指针类型警告

c - 从 while 循环将值传递到线程

ios - 如何检查此过程是否已完成?

iphone - 将 UIView 转换为 UITableView

objective-c - 如何使用按钮删除大纲 View 中包含核心数据的行?

iOS : How to reload a UITableView with a lot of cells without lagging the App?

c - 函数调用中不兼容的指针类型 - C