gpt4 book ai didi

objective-c - IOS:调用另一个类中的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:06 24 4
gpt4 key购买 nike

我有一个类“ClassA”和“MethodA”,我还有一个“ClassB”,我想从“ClassB”调用“methodA”;我写

@classA;

@property(nonatomic, retain) ClassA *classA;
//and also @synthesize...

然后我调用方法

[self.classA method];

但它不调用该方法....然后我在 classB 的 viewdidload 中写入

self.classA = [[ClassA alloc]init];

但是这个东西重置了 ClassA 中的变量。

我该如何解决这种情况?

最佳答案

编辑:我决定重写我的答案,因为我认为原来的措辞不好。

我认为您未能理解 Objective-C 2.0 点符号的作用。这很令人困惑,特别是如果您使用 C 或 C++ 编程,因为它在语法上等同于 struct 字段或 class 变量访问运算符,但在语义上不同。

当您使用时:

self.classA = newClassA;

你实际上在做同样的事情:

[self setClassA: newClassA];

@property classA 被定义为 retain 属性时,编译器生成的 setter 方法如下:

- (void) setClassA:(ClassA *)newClassA
{
if (classA != newClassA)
{
[newClassA retain];
[classA release];
classA = newClassA;
}
}

在您提供的代码中:

[self.classA method];

实际扩展为:

[self setClassA: method];

这不是您想要的。

避免这种混淆的最简单方法是根本不使用点符号,尤其是不要在处理变量分配或释放的同一类的实例方法中。

关于objective-c - IOS:调用另一个类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7688495/

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