问题标签 [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 中的类应该只在其头中公开公共方法和属性:
和私有方法/属性应保存在 .m 文件的类扩展中:
而且我认为没有一种protected
类型可以用于私有但可从子类访问的事物。我想知道,除了公开声明私有属性/方法之外,还有什么方法可以实现这一点?
objective-c - 编译器会为类别中声明的属性自动合成 ivar 吗?
在所谓的“现代Objective-C”之前,在类别中创建新属性时,我们需要实现setter 和getter 方法。现在,我们不必这样做@synthesize
;编译器将自动创建方法和实例变量。
但是通常情况下,我们不能将实例变量添加到类别中,那么如果我们在现代 Objective-C 的类别中添加新属性会发生什么?编译器会为我们创建一个 ivar 吗?
objective-c - 为什么我无法访问自动合成的 ivar?
我一直在阅读最新版本的 Xcode,你甚至不需要使用 synthesize 来生成 ivar、getter 和 setter,Xcode 本身会为你处理这个并为你创建类似 _youIvarName 的东西,但是在尝试了这个之后我无法完成这项工作。
即使我声明了我的属性,当我尝试访问这些 _yourVarName Xcode 时也会说这样的变量不存在。
例子
头文件:
执行:
这些尝试访问那些 _yourIvar 都没有工作......关于我在这里没有掌握的任何线索?
编辑:
我的主要问题是,如果我声明一个@property
Xcode 是否会自动生成 getter、setter 和实例变量(带有前导下划线,_myVar)而无需使用@synthesize
?这是我在 stackoverflow 上读到的,我不确定它是否真的有效。
objective-c - 不使用点语法反转 BOOL 属性
在这行代码中,我正在反转一个BOOL
值:
如何在没有点语法的情况下用“纯”Objective-C 语法重写这一行?
objective-c - Why does Xcode automatically create variables with underscores?
Why in the newest version of Xcode (dp-4) are variables declared with retain,nonatomic
made to use the underscore before the variable name? Does this create some sort of type safety?
For example, I create a property:
Unless I change the variable inside the dealloc
to not have the _, I have to do:
Why is this?
objective-c - 在 .h 接口或 .m 文件的扩展名中声明属性?
在 Objective-C 中,最好的做法是:
在.h中声明按钮等对象,然后在.m中合成
/li>或在 .m 中将它们声明为 ivars
/li>
我注意到在很多 Apple 代码中,特别是他们的 Breadcrumbs 示例代码,他们的许多属性都在接口中声明。两者有区别吗?我还注意到,当在 中声明属性时@interface
,它们会自动合成并带有下划线前缀,从而使someButton = _someButton
合成无用。
c++ - 变量未在此范围 C++ 中声明
我试图在另一个名为 display 的 .h 文件中调用一个函数,该文件接收 a 的指针,std::vector<vector<double> >
但是当我尝试调用它时,我得到错误未在此范围内声明变量。这是代码示例,希望对您有所帮助。
display.h 文件是这样的:
objective-c - 当我删除我的@synthesize 语句时,编译器错误“使用未声明的标识符”
在最新的 LLVM 版本中,已删除对综合属性的要求。
因此,我能够删除我@synthesize
的所有陈述,除了NSFetchedResultsController
. 有谁知道为什么当我删除该@synthesize fetchedResultsController;
行时编译器会警告我?
错误:
使用未声明的标识符“fetchedResultsController”,您的意思是 _fetchedResultsController 吗?
这是我的代码:
objective-c - 使用 performSelector: 访问 BOOL 属性
我正在使用performSelector:
返回一个id
对象的 来调用其他几种方法。这些方法的返回类型实际上可以是BOOL
、int
或NSDate
任何其他类型的对象。
如何判断返回的对象是否performSelector:
为 a BOOL
?我尝试将其转换为 aNSNumber
等,但如果对象不是BOOL
.
我有一个具有以下属性的类:
这个类是由框架生成的,所以我不能改变它。但我想循环A
, B
, C
,D
来调用每个属性并检索数据。但是,如您所见,返回类型可能会有所不同,我需要对此进行调整。
我正在做类似的事情:
objective-c - 我在支持原子属性的论点中是否遗漏了任何要点?
我读了这个问题(以及其他几个问题):
我完全理解(至少我希望如此 :-D)属性的原子/非原子说明符是如何工作的:
Atomic 保证“读”操作不会被“写”操作中断。Nonatomic 不保证这一点。
原子和非原子都不能解决竞争条件,即一个线程正在读取,两个线程正在写入。无法预测读取操作将返回什么结果。这需要通过额外的同步来解决。
原子和非原子都不能保证整体数据完整性;一个线程可以设置一个属性,而另一个线程将第二个属性设置为与第一个属性的状态不一致的状态。这也需要通过额外的同步来解决。
让我挑眉的是,人们分为两个阵营:
nonatomic
Pro atomic:仅用于性能优化是有意义的。
如果您不进行优化,那么由于第 1 点,您应该始终使用 atomic。这样,在多线程应用程序中读取此属性时,您不会得到一些完全的废话。当然,如果您关心第 2 点和第 3 点,则需要在其之上添加更多同步。
反对原子:使用原子根本没有意义。
由于 atomic 并不能解决多线程应用程序中的所有问题,因此使用它根本没有意义,因为无论如何您都需要在其之上添加更多同步代码。它只会让事情变慢。
我倾向于亲原子阵营,但我想做一个健全的检查,我没有错过任何东西。