在 init 中使用属性访问 iVar?

2023-12-13

这是上一个问题的分支,这是不好的做法吗(使用属性来设置 iVar)?

// Designated initializer 001
- (id)initWithName:(NSString *)newName andType:(NSString *)newType {
    self = [super init];
    if(self) {
        [self setName:newName];
        [self setType:newType];
    }
    return self;
}

或者我应该使用...

// Designated initializer 002
- (id)initWithName:(NSString *)newName andType:(NSString *)newType {
    self = [super init];
    if(self) {
        name = [newName retain];
        type = [newType retain];
    }
    return self;
}

我一直在使用版本 001,但人们认为在 init 或 dealloc 中使用属性来访问 iVar 是不好的做法。

EDIT: Added retain至版本 002

Gary.


是的,苹果劝阻在 init 或 dealloc 中使用访问器,因为它们除了设置实例变量之外还可能产生副作用。对于未初始化或已销毁的对象来说,这些显然是不受欢迎的。

Exact quote from the docs: "The only places you shouldn’t use accessor methods to set an instance variable are in init methods and dealloc."

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 init 中使用属性访问 iVar? 的相关文章

  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt
  • 将子视图发送到后面

    我正在尝试模仿 facebook ios 侧面菜单并让它工作 但是我遇到的问题是我无法将侧面菜单发送到后面 正如另一个问题中所讨论的那样使用 Objective C 的 iphone facebook 侧边菜单 https stackove
  • NSUserDefaults、Settings.bundle 和应用程序组

    我有一个有 2 个目标的应用程序 主应用程序和 Today 扩展 为了在这些目标之间共享设置 我打开了应用程序组功能 添加了一个组group myApp com然后使用NSUserDefaults在主应用程序和今日扩展中都是如此 var d
  • 设置属性文本后防止 UILabel 字体自动更改

    我发现如果我将属性文本设置为UILabel 预定义字体将更改为属性文本第一个字符的字体 例如 the font size is set to 20 in Interface Builder println theLabel font poi
  • 有没有办法更改 UITabBar 或 UITabBarItem 中的文本位置?

    这是我打算放在屏幕上的自定义选项卡栏 然而 我的搭档希望文字稍微向上一些 我怎样才能这样做呢 为什么不为视图控制器设置一个空的标题属性 并将标题添加到选项卡的自定义图像中 UPDATE 为了回答的完整性 来自评论和ios标签栏在没有图像时将
  • 如何在 UILabel 上创建强烈的红光效果

    我需要在 UILabel 或 CATextLayer 上实现外发光效果 如上所述 我知道要在文本上创建发光效果 我需要偏移量为 0 0 的阴影 我已经接触到quartz2D级别 以下是我正在使用的代码 backgroundDownLabel
  • 将 UIDatePicker 装入 UIActionSheet 中

    我正在尝试让带有 UIButton 的 UIDatePicker 显示在 UIActionSheet 中 不幸的是 它被剪掉了 整个日期选择器都不可见 我什至还没有尝试添加 UIButton 谁能建议让整个视图正确配合 我不确定如何添加正确
  • UIScrollView setContentOffset:动画:不起作用

    我有两个无限的 UIScrollViews 的问题 它们没有正确改变它们的偏移量 第一个 UIScrollView 中的项目与第二个 UIScrollView 中的另一个项目相对应 然后 我想将单击的项目放在第二位 并为两个 UIScrol
  • iPhone,sqlite3,如何尽可能用几行代码确定一个表是否已经存在?

    在开始再次向表添加数据之前 如何以尽可能少的代码行确定表中已经存在 如果直接使用sqlite 可以使用以下查询来查看表是否已经存在 SELECT name FROM sqlite master WHERE type table AND na
  • Swift 自定义 UITableViewCell 标签始终为零

    我已经被这个问题困扰好几天了 所以如果有人能提供帮助 我会很高兴 我正在尝试创建一个动态 UITableView 为此我创建了一个自定义 UITableView 子类 并且还创建了一个自定义 UITableViewCell 子类 因为我需要
  • 如何从一个 ViewController 到另一个 ViewController 访问对象

    提供一些技巧来摆脱以下情况 描述 我有两个 viewController 即视图控制器1 and 视图控制器2 所以显然我们有ViewController1 h ViewController1 m and ViewController2 h
  • NSImage 的 ressizedImageWithCapInsets ?

    In UIKit我们有 UIImage resizableImageWithCapInsets UIEdgeInsets capInsets 有类似的东西吗AppKit用于创建可平铺的NSImage NSImage 在 10 10 Yose
  • NSArray 中不重复的所有可能组合

    假设我有一个包含 3 个数字的数组 NSArray array 1 2 3 我想进行所有组合而不重复 所以我需要的是这样的 1 2 3 1 2 2 3 1 3 1 2 3 我当前的代码是这样的 NSArray array 1 2 3 int
  • 如何将 AFNetworking 2 与摘要式身份验证结合使用

    我一直在搜索 AFNetworking 2 with Digest Authentication 一段时间 但没有找到关于它的有用讨论 除了this one https github com AFNetworking AFNetworkin
  • 外观代理 - iOS 5 的 setShadowImage 替代品?

    您好 我正在使用此代码来设置导航栏的阴影图像 if self navigationController navigationBar respondsToSelector selector shadowImage UINavigationBa
  • EKEvent接受邀请

    你如何接受EKEventiOS 中的邀请 我知道这有可能梦幻般的 日历 5和其他日历应用程序具有此功能 但我没有看到公开的非只读属性来更改用户有关事件的状态 知道如何做到这一点吗 Thanks 事实证明 经过更多研究后 所有这些应用程序都只
  • Objective C“#if”语法

    我对 如果 或 如果 有点困惑 if当我查看一些类时我看到的语法 例如 if someConstant someNumber do something elif etc versus if someConstant someNumber d
  • UIView类中addSubview和insertSubview的区别

    有什么区别addSubview and insertSubView以编程方式添加视图时的方法 唯一的区别在于视图添加的位置 是否是最前面的视图 addSubview 或者在第 5 个子视图之前 insertSubview atIndex 或
  • NSCF 数组越界?

    我有一个相当简单的应用程序 使用 Core Data 和几个数组控制器 在 IB 中 除了 xcdatamodel 文件之外 没有它们的代码文件 当我运行应用程序时 我在日志中收到以下错误 应用程序仍然运行 但在转到 文件 gt 新文档 之

随机推荐

  • 用自己的函数变换 mpl 向量

    我想将每个元素相乘mpl vector by an int 首先 一个元函数来乘以int 与int template
  • 如何使用 JavaScript 创建唯一 ID?

    我有一个表单 用户可以在其中为多个城市添加多个选择框 问题是每个新生成的选择框都需要有一个唯一的 id 这可以用 JavaScript 完成吗 这是选择城市的表格部分 另请注意 当选择特定州时 我使用一些 PHP 来填充城市
  • 如何调试错误:需要左值作为赋值的左操作数?

    我正在 Linux 上使用 gcc 编译器编译 c 程序 但是 我收到了显示为 错误 需要左值作为赋值的左操作数 的错误 该错误是由如下所示的代码行引起的 socklen t saddr size data2 ssize 我可以知道如何调试
  • 在 Jetty 中设置最大 URL 长度

    我查看并发现一些人在 Jetty 中遇到 GET 请求 URL 超过最大长度问题的答案是 将 jetty xml 中的 headerBufferSize 设置为更大的数字 如下所示本 Solr 故障排除手册 and this 但是 我很难理
  • 在 R 数据框中查找列值遵循序列的行

    我有一个如下数据框 它是分类器的输出 col1 class 123 2 122 5 124 7 125 9 126 15 127 2 128 19 129 5 130 7 179 9 180 3 我想找到具有特定类模式的行 例如类位于 se
  • 为什么我的IP地址以192开头?

    我来自非网络背景 我突然想知道为什么我工作的公司几乎都是 192 168 x x 这样的 ip 为什么他们不能有像 1 2 3 4 这样的东西 我知道ip有一个概念 叫做子网划分 此外 192 168 0 0 至 192 168 255 2
  • 有没有简单的方法可以在 JPanel 上画一个圆?

    我在使用 drawOval x y width height 方法时遇到问题 该方法假设 x 和 y 值代表 要绘制的椭圆形的左上角 的坐标 javadoc 我希望 x 和 y 值代表中心点一个圆圈 我该怎么做呢 谢谢 如果您提前声明了宽度
  • 通过对另外两个数组的所有元素应用二元运算来在 Swift 中创建数组

    Swift 中是否有一种通过对另外两个数组的元素应用二元运算来创建数组的简洁方法 例如 let a 1 2 3 let b 4 5 6 let c 0 lt 3 map a 0 b 0 c 5 7 9 如果你使用zip要组合元素 您可以参考
  • 精确浮点计算两个乘积的和与差

    两个乘积之差和两个乘积之和是在各种常见计算中发现的两个原语 diff of products a b c d ab cd 和 sum of products a b c d ab cd 是密切相关的伴随函数 仅部分操作数的符号不同 使用这些
  • 如何用C#发送彩信

    我需要通过 C 应用程序发送彩信 我已经发现了 2 个有趣的组件 http www winwap com http www nowsms com 有人有使用其他第三方组件的经验吗 有人可以解释一下我需要什么样的服务器来发送这些彩信吗 它是经
  • WCF ria 服务 SP1 超时已过期

    我的解决方案是 Silverlight 它使用 WCF RIA 服务 SP1 和实体框架 4 我在加载大尺寸数据时遇到问题 我收到此错误消息 System ServiceModel DomainServices Client DomainE
  • 同一 JPA 类的多个数据库支持

    我们的项目使用 MYSQL 和 Hibernate JPA用于将对象持久保存在数据库中 我们有多个具有相似代码的类 Entity Table name users class Users implement Serializable Id
  • 当出现 E_USER_DEPRECATED 级别错误时如何运行 Behat 测试

    我有一个 Symfony 2 7 表单类型 它导致了一些级别错误E USER DEPRECATED 这个错误不是来自我自己的代码 而是来自vendor symfony symfony src Symfony Bridge Doctrine
  • Python套接字模块:如何更改客户端的本地端口?

    我想使用 TCP IP 作为客户端从网络获取包 With connect TCP IP TCP PORT 我可以更改对等地址的端口 但是我改变了本地计算机的端口 编辑 我想使用带有四个端口的网卡 网卡连接到发送大量数据的测量设备 我如何查看
  • 如何从身份验证器重定向到外部身份验证端点?

    我正在编写一个网络应用程序 由于不同客户的需求 我希望拥有灵活的身份验证选项 我用的是官方的cakephp 身份验证库 但它没有 OpenID Connect 身份验证器 所以我正在滚动自己的 我遇到的问题是我无法返回修改后的Cake Ht
  • 解码 IntelliJ IDEA 文件夹名称颜色

    我有一个项目 有 4 个 Git 根 Project Project commons Project ui and Data Model 由于某些配置 我需要放置Project commons Project ui and Data Mod
  • 向 BroadcastReceiver 发送额外内容

    我有一个运行以下代码的活动 定义了时间和间隔 Intent buzzIntent new Intent getBaseContext BuzzReceiver class PendingIntent pendingIntent Pendin
  • 上周一的日期 Excel

    今天是 2013 年 2 月 27 日 星期三 我需要一个公式 该公式将返回上周一的日期 即 02 17 2013 我需要这样才能在发送电子邮件的 vba 代码中使用文件名或电子邮件主题 With oMail Uncomment the l
  • 是否可以在 Silverlight 中绑定到 lambda 表达式?

    我有一个仅绑定到集合的列表框 该集合有一个子集合 StepDatas 我想绑定到子集合的计数 但使用 WHERE 语句 我可以绑定到 ChildCollection Count 但在需要添加 lambda 表达式时会迷失方向 这是 XAML
  • 在 init 中使用属性访问 iVar?

    这是上一个问题的分支 这是不好的做法吗 使用属性来设置 iVar Designated initializer 001 id initWithName NSString newName andType NSString newType se