gpt4 book ai didi

ios - 需要帮助查找 iOS 的简单 Objective-C 代码中的错误

转载 作者:行者123 更新时间:2023-11-28 22:00:59 25 4
gpt4 key购买 nike

我是 Obj-C 编程的新手,我无法找出代码中的问题。下面我粘贴了来自不同类的代码片段......当我运行我的应用程序时,我得到 _pirate.health 的零值、_pirate.weapon.damage 的零值和 _pirate.weapon.name 的 (null)

我不知道为什么它不起作用。我现在很绝望:(感谢您的帮助!

ViewController.h

@property (strong, nonatomic) NCharacter *pirate;

ViewContoller.m

_pirate.health = 100;
_pirate.weapon.damage = 10;
_pirate.weapon.name = @"Fist";

Character.h

@property (strong, nonatomic) NWeapon *weapon;
@property (nonatomic) int health;

Character.m

@implementation NCharacter

- (instancetype)init
{
self = [super init];
if (self) {
_weapon = [[NWeapon alloc] init];
}
return self;
}

@end

NWeapon.h

@property (strong, nonatomic) NSString *name;
@property (nonatomic) int damage;

NWeapon.m

@implementation NWeapon
- (instancetype)init
{
self = [super init];
if (self) {
_name= [[NSString alloc] init];
}
return self;
}
@end

最佳答案

您似乎从未分配属性 self.pirate - 在头文件中分配属性不会自动为您创建对象。因此,在调用您的 NCharacter 方法之前,您需要 alloc] init];

试试这个:

_pirate = [[NCharacter alloc] init];
_pirate.health = 100;
_pirate.weapon.damage = 10;
_pirate.weapon.name = @"Fist";

在某些情况下,延迟加载属性可能很有用。为此,请在您的 ViewController.m 中创建以下内容:

-(NCharacter *)pirate
{
if(!_pirate){
_pirate = [[NCharacter alloc] init];
}

return _pirate;
}

因此您将能够使用与之前类似的东西

self.pirate.health = 100;
self.pirate.weapon.damage = 10;
self.pirate.weapon.name = @"Fist";

调用 self.pirate 将为您实例化该对象。

关于ios - 需要帮助查找 iOS 的简单 Objective-C 代码中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109089/

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