Objective-C指针>指向属性

时间:2011-02-15 11:39:23

标签: iphone objective-c ipad ios pointers

我有一个名为'estimatedTime'的自定义类的NSInteger属性,现在,在我的UITableView类中,我试图将此属性作为指向UITableViewCell的指针传递。我似乎无法让它工作!我尝试了以下内容:

NSInteger *pointer = sharedManager.tempTask.&estimatedTime;
NSInteger *pointer = &sharedManager.tempTask.estimatedTime;

我收到了错误:lvalue需要作为一元'&'操作数 和:'&'之前的预期标识符令牌

你能不能将指针传递给一个属性?该属性不只是自我指向我的自定义类中的ivar吗?我需要它作为指针类型,所以我可以在UITableViewCell内部更改UITextField时编辑该值。

谢谢,希望它有意义!

4 个答案:

答案 0 :(得分:15)

属性不是变量;它们只是get / set-style方法的语法糖。因此,您无法获取房产的地址。

答案 1 :(得分:3)

正如马塞洛所说,你不能使用房产本身来做这件事。

您要么:

  1. tempTask添加方法,该方法返回指向estimatedTime iVar(NSInteger *pointer = sharedManager.tempTask.estimatedTimePointer)的指针
  2. 使用临时NSInteger,将其地址用于您需要的任何电话,然后将结果复制到estimatedTime
  3. 选项1可能是非常糟糕的主意,因为它打破了对象封装。

答案 2 :(得分:0)

对于在指针中使用数字,我建议使用NSNumber *而不是NSInteger *(NSInteger实际上是一个int)。例如,如果sharedManager.tempTask.estimatedTime是NSInteger,您可以这样做:

NSNumber *pointer = [NSNumber numberWithInt:sharedManager.tempTask.estimatedTime];

现在,当你想使用数值的int值时:

NSInteger i = [n intValue];

NSNumber *是一个obj-c对象,因此适用通常的保留/释放/自动释放机制。

答案 3 :(得分:0)

实际上当你说Object1.Propertyxy.Property1

实际上它在一些内存中被称为FUNCTION而不是VARIABLE / VALUE。

  

在你的情况下,“tempTask”将充当   功能和“估计时间”作为   论证和结果将是   返回功能。

我知道并且完全同意指针非常有利于提高速度但是在这种情况下它只是无用,因为它需要在某处存储属性,然后引用i,只是浪费时间和内存,只为它而去如果你必须每次使用100次这种非常特殊的属性:D

希望这有帮助,如果它不让我知道,我会很乐意提供帮助。