为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我释放了这两个对象的时候没有任何的报错?

为什么我释放了这两个对象的时候没有任何的报错?

C iOS
吃鸡游戏 2023-04-16 13:09:31
写了有半年多的objective-c了,公司只有我一个人做ios开发,我先代码在提问在.h中@interface LoginPageViewController : UIViewController{ NSArray *_array2;@private NSArray *_array; }@property (nonatomic,retain) NSArray *array; 在.m中@implementation LoginPageViewController@synthesize array = _array; - (void)dealloc { NSLog(@"loginPage dealloc"); [super dealloc]; NSLog(@"_array count = %d",[_array retainCount]); [_array release]; NSLog(@"_array2 count = %d",[_array2 retainCount]); [_array2 release]; } 我在.m中没有alloc 这两个数组2012-12-18 09:54:38.020 iPhone_MIU[1926:11303] loginPage dealloc2012-12-18 09:54:38.021 iPhone_MIU[1926:11303] _array count = 02012-12-18 09:54:38.022 iPhone_MIU[1926:11303] _array2 count = 0但是事情就出现了,问题一:为什么我释放了这两个对象的时候没有任何的报错?问题而:我在@sythsize中array = _array;中这样写了之后,我还是不是必须将_array在viewDidLoad中alloc之后才能使用问题三:有没有好的代码规范的文章推荐看一下,最好的内存管理这一块的
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

1.Objective-c可以向nil对象发送消息.
2.@property和@synthesize编译器指令是用来合成getter和setter方法的.至于需不需要在在viewDicLoad中分配一个对象给_array,要看你的需求。建议你看下Objective-c中的属性方面资料.
3.内存管理这块,今后建议您使用ARC.

查看完整回答
反对 回复 2023-04-20
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

1、objective-c是可以向nil对象发送消息而不会报错
2、建议你熟悉一下@property中,retain、copy、assign的区别,还需知道readonly的作用,才能决定是否需在viewDidLoad中alloc成员变量
3、只要你alloc、retain、copy与release成对出现,一般不会出现内存问题


查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信