我可以从另一个视图传递/访问原始数据类型(float,double,int)吗?

时间:2011-09-06 11:04:03

标签: iphone objective-c ios cocoa-touch

我有两类View Controllers ....

查看1

查看2

查看1

@interface BillDataEntryViewController : UIViewController {

    double x;
    double y;

//这是一个大文件,但只显示哪个是必要的..
       }

//我还没有声明任何属性,也没有合成它?


查看2

在另一个视图中,我正在创建一个名为objView1

的view1对象

但我无法访问 objView1.double ?为什么..

4 个答案:

答案 0 :(得分:3)

您需要为每个ivar添加属性并合成它们。 然后,您可以致电:objView1.xobjView1.y

@property (nonatomic, assign) double y;

答案 1 :(得分:3)

保留不能用于原始类型。但你可以合成它们。

答案 2 :(得分:3)

您应该阅读objective-c's properties。特别是在.h文件中指定它们时可以提供的修饰符。但是,根据经验:

  1. 对于想要保留对retain的引用的对象 - 这会在你给它的每个对象上调用retain(它也会为你调用前一个对象的释放!)

    @property (nonatomic, retain) UIView *view;
    
  2. 对于原始数据类型,使用assign - 这只会将您的变量设置为您给出的值:

    @property (nonatomic, assign) float myFloat;
    
  3. 对于具有可变子类的内容,请使用copy

    @property (nonatomic, copy) NSString *myString;
    

    选项(3)适用于NSString,NSData,NSURL,NSSet,NDictionary等等 - 基本上 任何具有Mutable版本的东西(即NSString都有一个NSMutableString)。

  4. readonly如果您不希望任何人能够更改您的数据 - 这适用于指针和基本类型。

    @property (nonatomic, readonly) double myDouble;
    @property (nonatomic, readonly) UIView *myView;
    

答案 3 :(得分:-1)

在我看来,在两个视图之间传递值是一个坏主意。您应该使用ViewController。

此外,您应该通过创建getter(通过编写方法或声明ans合成属性)使vars可以访问其他对象。