gpt4 book ai didi

iphone - IOS 为什么使用 _variable 初始化失败而不是使用 NSNumber 的 self.variable?

转载 作者:行者123 更新时间:2023-11-28 20:32:34 25 4
gpt4 key购买 nike

我有以下类(class):

----.h文件

#import <Foundation/Foundation.h>
#import "MapperProtocoll.h"

@interface ServiceRequest : NSObject {
}

@property (strong, nonatomic) NSString *url;
@property (strong, nonatomic) NSString *postData;
@property (strong, nonatomic) NSNumber *requestId;
@property (strong, nonatomic) id<ServiceMapperDelegate> mapper;

-(id)initWithUrl:(NSString *)url andWithPostdata:(NSString *)postData;

@end

-------- .m 文件

#import "ServiceRequest.h"

@implementation ServiceRequest

@synthesize url = _url, postData = _postData, requestId = _requestId, mapper = _mapper;

-(id)initWithUrl:(NSString *)url andWithPostdata:(NSString *)postData {
if (self = [super init]) {
_url = url;
_postData = postData;
self.requestId = [NSNumber numberWithInt:-1]; // HERE IS THE PROBLEM
}
return self;
}

@end

为什么self.requestId = [NSNumber numberWithInt:-1];工作但是_requestId = [NSNumber numberWithInt:-1];抛出运行时错误?

最佳答案

类方法 [NSNumber numberWithInt:-1] 正在返回一个自动释放的值。当您使用合成 setter 方法时,该值将由 setter 保留。当您绕过 setter 时,没有保留...因此,一旦自动释放池被耗尽,您就会有一个悬空指针。

关于iphone - IOS 为什么使用 _variable 初始化失败而不是使用 NSNumber 的 self.variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com