热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

int类型的setter/getter的正确属性是什么?-Whatisthecorrectattributeforasetter/getterforanint?

Ihaveseenanumberofdifferentwaystopropertisesynthesizeaint,butIdontknowtheproperw

I have seen a number of different ways to propertise/synthesize a int, but I don't know the proper way.

我已经看到了许多不同的方法来正确地使用/合成int,但是我不知道正确的方法。

I usually do:

我通常做的事:

@property (nonatomic, assign) int myInt

But I have seen people use:

但是我看到人们用:

@property (nonatomic) int myInt
@property int myInt

Which way is correct?

哪条路是正确的?

4 个解决方案

#1


3  

Here is a great post about the difference between atomic and nonatomic:

这里有一篇关于原子和非原子的区别的文章:

Assuming that you are @synthesizing the method implementations, atomic vs. non-atomic changes the generated code. If you are writing your own setter/getters, atomic/nonatomic/retain/assign/copy are merely advisory.

假设您是@ synzing方法实现,原子vs非原子更改生成的代码。如果您正在编写自己的setter/getter,那么原子/非原子/保留/分配/复制仅仅是咨询。

With atomic, the synthesized setter/getter will ensure that a whole value is always returned from the getter or set by the setter, regardless of setter activity on any other thread. That is, if thread A is in the middle of the getter while thread B calls the setter, an actual viable value -- an autoreleased object, most likely -- will be returned to the caller in A.

对于原子,合成的setter/getter将确保所有值始终从getter中返回或由setter设置,而不考虑任何其他线程上的setter活动。也就是说,如果线程A位于getter的中间,而线程B调用setter,那么一个实际可行的值——最可能是一个autoreleated对象——将在A中返回给调用者。

In nonatomic, no such guarantees are made. Thus, nonatomic is considerably faster than atomic.

在非原子中,没有这样的保证。因此,非原子比原子快得多。

What atomic does not do is make any guarantees about thread safety. If thread A is calling the getter simultaneously with thread B and C calling the setter with different values, thread A may get any one of the three values returned -- the one prior to any setters being called or either of the values passed into the setters in B and C. Likewise, the object may end up with the value from B or C, no way to tell.

原子不做的是保证线程安全。如果线程与线程同时调用getter B和C调用setter与不同价值观,线程A可能会返回的三个值中的任何一个,前一个被调用setter或者值传递到setter的B和C .同样,价值的对象可能会从B或C,无法告诉。

Ensuring data integrity -- one of the primary challenges of multi-threaded programming -- is achieved by other means.

确保数据完整性(多线程编程的主要挑战之一)是通过其他方式实现的。

Note that the default is atomic, so the last example is equivalent to

注意,默认值是原子的,所以最后一个示例等价于

@property (atomic) int myInt

Another default value is assign, therefore these two options are equivalent:

另一个默认值是assign,因此这两个选项是等价的:

@property (nonatomic, assign) int myInt
@property (nonatomic) int myInt

And, similarly, the following are also equivalent

同样,下面的内容也是等价的

@property (atomic, assign) int myInt
@property (atomic) int myInt

EDIT: As Josh points out, atomic being included is a hypothetical example.

编辑:正如Josh所指出的,原子被包含是一个假设的例子。

#2


0  

defaults are assign and atomic

默认值是赋值和原子的

#3


0  

It's more of a style issue than an issue of technical correctness. For an int type, the only thing that has to true the assign modifier (because you don't retain scalars). Otherwise, it's context specific: readwrite or readonly, atomic or nonatomic, it depends on the application.

与其说是技术正确性问题,不如说是风格问题。对于int类型,唯一需要对赋值修饰符进行赋值的东西(因为不保留标量)。否则,它是特定于上下文的:readwrite或readonly、atomic或nonatomic,这取决于应用程序。

Note that if you don't specify a modifier, the default applies (atomic, readwrite, assign). So your example your first other example are identical, and the third only differs in atomicity.

注意,如果没有指定修饰符,则默认应用(原子、读写、赋值)。你的例子你的第一个例子是相同的,第三个只是原子性不同。

#4


0  

@property(nonatomic,assign)int myVariable;

@ property(原子,分配)int myVariable;

always remember assign will be used for primitive data types like int , bool

永远记住,assign将用于像int、bool这样的原始数据类型


推荐阅读
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 作为一名 Ember.js 新手,了解如何在路由和模型中正确加载 JSON 数据是至关重要的。本文将探讨两者之间的差异,并提供实用的建议。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文详细探讨了Netty中Future及其子类的设计与实现,包括其在并发编程中的作用和具体应用场景。我们将介绍Future的继承体系、关键方法的实现细节,并讨论如何通过监听器和回调机制来处理异步任务的结果。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
author-avatar
herogan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有