标签: instance-variables

Objective-C中的ivars和属性有什么区别

在objective-c中使用ivars和属性的这三种方式之间的语义差异是什么?

1.

@class MyOtherObject; 
@interface MyObject {
}
@property (nonatomic, retain) MyOtherObject *otherObj;
Run Code Online (Sandbox Code Playgroud)

2.

#import "MyOtherObject.h"
@interface MyObject {
    MyOtherObject *otherObj;
}
@property (nonatomic, retain) MyOtherObject *otherObj;
Run Code Online (Sandbox Code Playgroud)

3.

#import "MyOtherObject.h"
@interface MyObject {
    MyOtherObject *otherObj;
}
Run Code Online (Sandbox Code Playgroud)

properties objective-c instance-variables

81
推荐指数
2
解决办法
2万
查看次数

直接访问实例变量与使用访问器方法

谁能解释通过self.attribute和通过访问实例属性之间的区别@attribute

ruby accessor instance-variables

80
推荐指数
1
解决办法
1万
查看次数

从类外部访问实例变量

如果实例变量属于某个类,我可以@hello直接使用类实例访问实例变量(例如)吗?

class Hello
  def method1
    @hello = "pavan"
  end
end

h = Hello.new
puts h.method1
Run Code Online (Sandbox Code Playgroud)

ruby instance-variables

78
推荐指数
2
解决办法
6万
查看次数

如何在Ruby中初始化模块的实例变量?

我有一些模块,我想在其中使用实例变量.我目前正在初始化它们:

module MyModule
  def self.method_a(param)
    @var ||= 0
    # other logic goes here
  end
end
Run Code Online (Sandbox Code Playgroud)

我也可以调用init方法来初始化它们:

def init
  @var = 0
end
Run Code Online (Sandbox Code Playgroud)

但这意味着我必须记住要经常打电话给它.

有没有更好的方法呢?

ruby module instance-variables

77
推荐指数
2
解决办法
7万
查看次数

Ruby Rspec:测试实例变量而不添加源的访问器

我正在尝试测试以下方法:

def unprocess_move(board, move)
  if move[0].instance_of?(Array)
    multi_move = @multi_move.pop(2).reverse
    multi_move.each do |single_move|
      unapply_move(board, single_move)
    end
  else
    board = unapply_move(board, move)
  end
  board
end
Run Code Online (Sandbox Code Playgroud)

我想为@multi_move设置状态,但我不想添加一个仅用于测试的访问器.没有访问器有没有办法这样做?谢谢.

ruby rspec instance-variables

74
推荐指数
1
解决办法
4万
查看次数

整体是否始终初始化为0?

指望int在Objective-C中始终初始化为0 是否安全?

更具体地说,当int新实例化具有ivars 的对象时,可以安全地假设其ivars的值为0吗?

int initialization objective-c instance-variables

73
推荐指数
1
解决办法
2万
查看次数

什么时候Ruby实例变量设置?

class Hello
@hello = "hello"
    def display
        puts @hello
    end
end

h = Hello.new
h.display
Run Code Online (Sandbox Code Playgroud)

我创建了上面的课程.它不打印任何东西.我认为在类声明期间设置了实例变量@hello.但是当我调用display方法时输出为'nil'.这样做的正确方法是什么?

ruby syntax instance-variables

65
推荐指数
5
解决办法
4万
查看次数

每个伊娃都必须是财产吗?

我看到它在为iOS编码时建议应该使用属性来访问实例变量,因为这会给内存管理带来诸多好处.

这个建议并不适合我.我发现使用属性而不是普通的旧ivars只需要太多的代码,如果你对内存管理感到满意,我并没有真正看到它的好处.它真的那么重要吗?您管理实例变量的方法是什么?

properties objective-c instance-variables ios

56
推荐指数
2
解决办法
2万
查看次数

Objective-C中的属性和实例变量

我对Objective-C中的属性和实例变量感到困惑.

我在Aaron Hillegass的"Mac OS X的可可编程"中走了一半,一切都是合乎逻辑的.你会声明一个这样的类:

@class Something;

@interface MyClass : NSObject {
    NSString *name;
    NSArray *items;

    Something *something;

    IBOutlet NSTextField *myTextField;
}

@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSArray *items;
Run Code Online (Sandbox Code Playgroud)
  • 由于其他对象需要操作我们的实例nameitems实例变量,我们使用@property/ @synthesize为它们生成访问器/ 更改器.在我们的类中,我们不使用访问器/ mutator - 我们只是直接与实例变量交互.

  • something 只是我们将在我们的类中使用的实例变量,并且由于没有其他人需要使用它,我们不会为它创建一对访问器和变换器.

  • 我们需要在UI中与文本字段进行交互,因此我们声明了IBOutlet它,连接它,我们就完成了.

都很合乎逻辑.

然而,在iPhone世界中,事情似乎有所不同.人们声明属性,为每一个实例变量,用于声明属性IBOutlets,并使用存取/存取器与实例变量相互作用的类别(例如,他们会写[self setName:@"Test"],而不是name = @"Test").

为什么?到底是怎么回事?这些差异是否与iPhone有关?为所有实例变量声明属性,为IBOutlets自己的类声明属性以及在自己的类中使用访问器/变换器有什么好处?

cocoa cocoa-touch properties objective-c instance-variables

55
推荐指数
2
解决办法
2万
查看次数

在类方法中使用实例变量 - Ruby

我对ruby很新(我实际上是c#dev.),所以这个问题可能是一个菜鸟.我有一个像下面这样的类,我使用实例变量(数组)来避免使用大量的方法参数.

它按照我的预期工作,但这是一个很好的做法吗?实际上我不希望它有效,但我想类方法在其他语言中不能作为静态方法工作,所以我想知道这是不是一个好的做法,或者我是否会遇到诸如将这些变量作为类变量和乱码的问题一切都好了.

class DummyClass
  def self.dummy_method1
    @arr = []
    # Play with that array
  end

  def self.dummy_method2
    # use @arr for something else
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby instance-variables

54
推荐指数
2
解决办法
3万
查看次数