问题标签 [declared-property]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 以字符串形式获取属性名称
我需要一种方法来传递属性并获取分配给它的名称。有什么建议么?
objective-c - 如何在 Objective-C 中使用运行时反射来解析属性 getter/setter 方法选择器?(或反向)
Objective-C 提供运行时反射特性。我正在尝试查找已声明属性的 getter/setter 选择器名称。我知道field
/之类的基本规则setField:
。无论如何,我认为运行时反射应该提供一个功能来解析完整抽象的名称,但我找不到该功能。
如何在Objective-C(实际上是Apple的Cocoa)中使用运行时反射解决声明属性的getter/setter方法选择器(不是实现)
或反向查询。(方法选择器→声明的属性)
objective-c - 键值编码是否支持声明属性的自定义访问器名称?
Cocoa 的键值编码使得对属性的获取/设置操作变得简单。无论如何文档说它只识别预定义的命名模式。我认为这个特性可以支持Declared Property 。实际上,Declared Property 的基本访问与 Key-Value 编码的搜索模式相同。问题是自定义访问器。因为自定义访问器存储为属性的属性,所以我认为很容易在键值编码中支持它们。但我找不到关于这个的提及。
使用自定义访问器对声明的属性使用键值编码时的常规行为是什么?
ios - 为什么在 Xcode 自动生成托管对象类文件时,属性声明将布尔属性的类型设置为 NSNumber?
当我让 Xcode 自动为数据模型中的实体创建类文件时,我指定的任何属性Boolean
都会在属性声明中获取 NSNumber 类型:
由于我使用的是 ARC,不应该是strong
而不是retain
吗?
可能发生这种情况是因为Boolean
无法转换为对象。那是对的吗?如果是这样,我如何使用应该具有布尔值的属性?
objective-c - 属性是否默认为零?
如果我不使用 ivar 作为属性,但这样做:
我第一次检查self.someArray
它会返回nil
,_someArray
但这是有保证的吗?我只读到 ivars 保证是nil
,并且由于我没有声明 ivar (_someArray
不是 ivar),我不确定它是否会nil
无处不在。
objective-c - 为什么这个 UIView 在某些情况下不被添加为子视图,但在其他情况下呢?
我有一个 UIView viewForRootVc
,它是 UIView 子类的声明属性NewView
。初始化是NewView
的责任viewForRootVc
,但随后子类NewViewSubClass
设置其背景颜色。完成这一切后,根视图控制器RootVc
将viewForRootVc
作为子视图添加到其视图中。
但这不起作用。viewForRootVc
实际上并没有被添加。
但是,如果我执行以下三件事中的任何一项(请记住我使用的是 ARC),它确实有效:
- 我没有设置
viewForRootVc
in的背景颜色,而是将其设置为。然后,我不初始化 的实例,而是简单地初始化 的实例。NewViewSubClass
NewView
NewViewSubClass
NewView
- 在初始化
viewForRootVc
时NewView
,我调用setter(即self.viewForRootVc),而不是仅仅使用直接赋值。 viewForRootVc
在头文件中作为 ivar列出NewView
。
我不明白为什么这三件事都是必要的。
这是不起作用的代码:RootVc.m
新视图.h
新视图.m
新视图子类.m
我注意到的一件事是,如果我指定为viewForRootVc
ivar,我不需要放入.@synthesize viewForRootVc;
NewViewSubClass
我一直理解声明的属性可以有效地实现以下目标:
- 允许其他对象访问它们。
- 允许在需要时调用 setter。
- 如果不使用 ARC,如果您
retain
在属性声明中指定,调用 setter 将自动保留该属性。 - 在 ARC 下,任何声明的属性都会自动生成一个 ivar。
但显然,它的意义远不止于此。我不确定这是否是范围问题,或者我上面的非工作代码是否最终创建了两个不同的版本——也许一个具有's方法viewForRootVc
中指定的正确框架,另一个具有正确的背景颜色在's方法中指定,但两者都没有正确的框架和颜色。NewView
init
NewViewSubClass
init
我非常希望有人可以一劳永逸地为我澄清声明的属性与 ivars 的含义,以及调用 setter 来设置声明的属性与直接为其赋值。
c++ - C ++,尝试创建类时收到此消息:错误:没有在类“媒体”中声明的“无效媒体::*()”成员函数
对 c++ 来说有点新,试图创建类/函数以使我未来的代码干净。我正在使用 Code::Blocks 来创建我的程序,并且目前接收到以下 cpp 和 disctype、ripmusic 和 dvdmanip 的头文件的上述消息。编译器是 gcc,这不是主程序。
头文件:
.cpp 文件:
objective-c - Objective-C 只读属性是否需要指定强或复制?
如果我有一个只读字符串属性,是否需要指定strong
(或retain
)或copy
在声明中?如果我不指定,是否假定其中之一?
在我看来,所有权属性仅在您拥有 setter 时才有用。
objective-c - Objective-C 声明的@property 属性(非原子、复制、强、弱)
当我必须对声明的属性使用每个属性时,有人可以向我详细解释:nonatomic
, copy
, strong
, weak
, 等等,并解释每个属性的作用吗?某种例子也会很棒。我正在使用 ARC。
objective-c - 为什么在我的代码中 [foo view] 的行为与 foo.view 不同?
纯属偶然,我发现调用[bar.view addSubview:[foo view]]
不起作用,但[bar.view addSubview:foo.view]
在以下代码中起作用。
(最后一行是因为foo
有一些子视图需要在运行之前设置——特别是 a UIWebView
。如果在发送消息之前它们没有被实例化,则消息最终会转到nil
. 和foo
。)
我认为这两者在功能上是相同的——foo.view
调用相同的 getter [foo view]
,但实际上并非如此;点语法得到了想要的结果,而使用方括号最终将消息发送到nil
.
如果你十分钟前问我,我会告诉你这两种表达方式的区别是“语法,仅此而已”。鉴于我显然错了,我需要了解我是如何错的,否则我会再次绊倒它。