ios-关于iOS中@property和@synthesize问题求教

问题描述

关于iOS中@property和@synthesize问题求教

.h中代码
@property(retain,nonatomic) NSMutableArray *arr;

.m中代码
@synthesize arr;

如果是这样的话,在.m中使用_arr 就会报错,说_arr没有申明的错。
但是如果.m中的代码改为
@synthesize arr = _arr;
那么使用_arr 就不会报错。
这是为什么呢??

解决方案

1.之前一直以为属性@property是不需要实例化的。所以没有实例化这个概念了。在项目中,model里的一些属性也是直接调用一些框架的。所以也不需要在代码里实例化。再一般而言,xib中的一些View,button也是不需要用代码去实例化的。
和@property对应的是@synthesize方法。Xcode编译器会自动添加@synthesize xx=_xx;这样子的代码。
@synth......
答案就在这里:iOS中关于属性@property和@synthesize的问题:
----------------------

解决方案二:

这是一个很有意思的问题.
@property(retain,nonatomic) NSMutableArray *arr

@synthesize arr;
你都已经这样写了为什么不直接用arr呢

如果你想用_arr;

那你就只要在.h里 @property(retain,nonatomic) NSMutableArray *arr

这要就可以用_arr;

PS:在iOS里 下划线 开头的变量是有特别的意义的.自己的开发的时候别随便用下划线开头命名变量.

解决方案三:

改成@synthesize arr = _arr;

解决方案四:

这都什么年代了,还用这个,现在只要使用@property声明,都会自动生成get和set方法的,不用写@synthesize,另外现在都是arc模式,声明数组应该用strong,不用retain

解决方案五:

将arr赋值给_arr

时间: 2024-10-27 09:57:25

ios-关于iOS中@property和@synthesize问题求教的相关文章

iOS基础知识之@property 和 Ivar 的区别_IOS

@property 属性其实是对成员变量的一种封装.我们先大概这样理解: @property = Ivar + setter + getter Ivar Ivar可以理解为类中的一个变量,主要作用是用来保存数据的. 我们不妨来看个例子,通过下边的例子能够很清楚的解释这两个东东: 我们新建一个Person类 @interface Person : NSObject { NSString *name0; } @property(nonatomic,copy)NSString *name1; @end

iOS 各版本中的新特性(What's New in iOS)- 目录翻译完成

iOS 各版本中的新特性(What's New in iOS) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 介绍 Introduction文档组织结构 Organization of Thi

iOS App开发中使cell高度自适应的黑魔法详解_IOS

在使用 table view 的时侯经常会遇到这样的需求:table view 的 cell 中的内容是动态的,导致在开发的时候不知道一个 cell 的高度具体是多少,所以需要提供一个计算 cell 高度的算法,在每次加载到这个 cell 的时候计算出 cell 真正的高度. 在 iOS 8 之前 没有使用 Autolayout 的情况下,需要实现 table view delegate 的 tableView(tableView: UITableView, heightForRowAtInde

ios-安卓和IOS有没有中文文档呢,我英文不好?

问题描述 安卓和IOS有没有中文文档呢,我英文不好? 安卓和IOS有没有中文文档?我英文不太好,看不懂英文的,有没有全中文的,不经简单翻译的 解决方案 下个有道词典,直接屏幕取词,没人能每个单词都会,主要要耐心看 解决方案二: 哈皮还是看英文的吧,看看就明白了 解决方案三: 看的多了就明白了,英语差不多的话,就能发现不会的就那么几个关键的词 解决方案四: 这个必须自己适应吧,毕竟各大技术网站还是英文的居多,API也是英文的,一点点积累吧 解决方案五: 一开始都会有这样的烦恼,那么多英文想想都头疼

iOS App开发中通过UIDevice类获取设备信息的方法_IOS

UIDevice提供了多种属性.类函数及状态通知,帮助我们全方位了解设备状况.从检测电池电量到定位设备与临近感应,UIDevice所做的工作就是为应用程序提供用户及设备的一些信息.UIDevice类还能够收集关于设备的各种具体细节,例如机型及iOS版本等.其中大部分属性都对开发工作具有积极的辅助作用.下面的代码简单的使用UIDevice获取手机属性. 简单示例:设备相关信息的获取   NSString *strName = [[UIDevice currentDevice] name];   N

iOS在应用中添加自定义字体

iOS在应用中添加自定义字体 一.在应用中添加自定义字体的步骤 1.网上提供的字体库有很多,下载完成后,将其导入工程中,一般为ttf格式. 2.注意Build Phases中的Copy Bundle Resources中是否导入了文件: 3.在项目的info.plist文件中添加字体键值如下: 这个数组中可以添加多个元素,多个字体库. 4.这时实际上我们已经将字体添加进了工程中,但是在在使用这个字体时,字体的名字有时和文件名是不一样的,我们需要知道真实的字体名称,通常情况下,我们会讲所有字体名称

在iOS应用程序中使用Frida绕过越狱检测

 您当前的位置: 安全博客 >  技术研究 >  在iOS应用程序中使用Frida绕过越狱检测          阿里聚安全在之前的三篇博客中介绍了利用Frida攻击Android应用程序,整个过程仿佛让开发者开启上帝视角,在本篇博客中,我们将会介绍在iOS应用程序中使用Frida绕过越狱检测.即使你从来没有使用过Frida,这篇文章也将会作为进入移动安全开发和分析的入门指南. 相关文章内容: 利用FRIDA攻击Android应用程序(一) 利用FRIDA攻击Android应用程序(二) 利用

安卓,iOS游戏开发过程中动画编辑一般选用什么软件?

问题描述 安卓,iOS游戏开发过程中动画编辑一般选用什么软件? 通过解压别人的游戏,发现序列帧动画全部基于最小尺寸,但是这样的话播放过程中肯定会出现位移现象.是不是对每一帧的坐标进行设置? 解决方案 不知道你说的出现位移现象是什么.当然没有必要保存整个画面,而只要画面中的基本元素,并且计算坐标贴图.

iOS Foundation 框架中 Mutable 的类们

iOS Foundation 框架中 Mutable 的类们 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Mutable 对于那些不能直接对其中内容进行更改的类来说,是一种扩展方式,象数值这