文档章节

iOS ARC下命名规则

 攻天
发布于 2014/12/10 11:04
字数 305
阅读 33
收藏 0

@property (strong, nonatomic) NSString *newTitle;

这是因为在高版本编译器ARC模式下,这种命名规范是不合理的,可以查看苹果官网的内存管理方面的文档中有说明the memory management rules

You take ownership of an object if you create it using a method whose name begins with “alloc”, “new”, “copy”, or “mutableCopy”.

前面带有 new 的属性在@synthesize的时候会生成getter和setter方法,如果有new打头的属性的时候,在生成getter就会调用newTitle方法,编译器认为这是生成

新的对象,而不是get原有的属性,所以就提示错误信息。

解决办法:

1。new前加上别的字符例如theNewTitle

@property(strong, nonatomic) NSString *theNewTitle;

        2。重写getter方法

@property(strong, nonatomic, getter=theNewTitle) NSString *newTitle;
        3  。第三种是可以new开头,但是要告诉编译器不是new个新对象

#ifndef __has_attribute
#define __has_attribute(x) 0 // Compatibility with non-clang compilers
#endif
#if __has_attribute(objc_method_family)
#define BV_OBJC_METHOD_FAMILY_NONE __attribute__((objc_method_family(none)))
#else
#define BV_OBJC_METHOD_FAMILY_NONE
#endif

@interfaceViewController : UIViewController
@property(strong, nonatomic) NSString *newTitle;
- (NSString *)newTitle BV_OBJC_METHOD_FAMILY_NONE;
@end

4。这种也可以啊

苹果已经有文档Transitioning to ARC Release Notes说明了开发者在命名的时候避免以 new 和 copy 开头

//Unacceptable Object Names
newButton
newLabel
newTitle
//Acceptable Object Names
_newButton
mewLabel
neueTitle


© 著作权归作者所有

下一篇: 图片上传
粉丝 0
博文 19
码字总数 7211
作品 0
东城
私信 提问
Xcode ARC需要什么版本的环境支持

Mac OS X v10.6 和 v10.7 (64位应用) 的Xcode 4.2以上版本支持ARC,iOS 4 和 iOS 5 下ARC都能工作,但Weak不支持Mac OS X v10.6 和 iOS 4,所以要想在iOS 4下运行用ARC的程序,只能用strong。...

东方皓
2013/05/06
79
0
arc 与 非arc的编译开关

Use Compiler Flags to Enable and Disable ARC You enable ARC using a new -fobjc-arc compiler flag. You can also choose to use ARC on a per-file basis if it’s more convenient for......

JohnZr
2012/09/18
134
0
If love, deep love:10 Most Useful iOS Libs

摘要:库是开发的根本,从页面到APP客户端,所有的设计都离不开它,但面对市面上鱼龙混杂的库,如何选择合适又好用的库?对开发新手来说,这是个问题。本文基于各方观点,选出了10大iOS开发者...

长平狐
2013/01/06
92
0
iOS 编写高质量Objective-C代码(五)

级别: ★★☆☆☆ 标签:「iOS」「内存管理」「Objective-C」 作者: MrLiuQ 审校: QiShare团队 前言: 这几篇文章是小编在钻研《Effective Objective-C 2.0》的知识产出,其中包含作者和小...

QiShare
2018/09/05
0
0
iOS网络编程:网络交互数据格式解析之json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,目前在网络交互过程中有着举足轻重的地位。如果您对 json 还有什么不清楚的话建议去看 json百度百科。 在iOS平台上,Apple 从...

GavinZhang
2013/01/15
3.3K
2

没有更多内容

加载失败,请刷新页面

加载更多

java发送html模板的高逼格邮件

最近做了一个监测k8s服务pod水平伸缩发送邮件的功能(当pod的cpu/内存达到指定阈值后会水平扩展出多个pod、或者指定时间内pod数应扩展到指定数量),一开始写了个格式很low的邮件,像下面这样...

码农实战
17分钟前
6
0
php-fpm配置文件详解/MariaDB密码重置、慢查询日志

来源:https://blog.csdn.net/Powerful_Fy php-fpm主配置文件路径:/usr/local/php-fpm/etc/php-fpm.conf #位于安装php安装目录下的etc/目录中,该文件中最后一行将配置文件指向:include=/...

asnfuy
22分钟前
4
0
川普给埃尔多安和内堪尼亚胡的信

任性 https://twitter.com/netanyahu/status/1186647558401253377 https://edition.cnn.com/2019/10/16/politics/trump-erdogan-letter/index.htm...

Iridium
43分钟前
12
0
golang-mysql-原生

db.go package mainimport ("database/sql""time"_ "github.com/go-sql-driver/mysql")var (db *sql.DBdsn = "root:123456@tcp(127.0.0.1:3306)/test?charset=u......

李琼涛
今天
5
0
编程作业20191021092341

1编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时 间。使用#define或const创建一个表示60的符号常量或const变量。通过while 循环让用户重复输入值,直到用户输入小于或等于0的值...

1李嘉焘1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部