gpt4 book ai didi

objective-c - 在 UIScrollView 子类中创建委托(delegate)

转载 作者:行者123 更新时间:2023-12-01 18:26:53 24 4
gpt4 key购买 nike

我对 UIScrollView 进行了子类化以对其进行一些自定义。我正在尝试创建一个委托(delegate),它将通知其他几个类用户在 UIScrollView 中做了某件事。在我的 UIScrollView 类中,我有下面的代码。我遇到的问题是我收到警告

Property 'delegate' 'retain (or strong)' attribute does not match the property inherited from 'UIScrollView'



我看到这是因为我的类继承自 UIScrollView,但我的委托(delegate)符合 NSObject。这是我第一次尝试创建自己的委托(delegate)。我能做些什么来解决这个问题?

我的代码:
#import <UIKit/UIKit.h>

@protocol ChangeSpaceDelegate <NSObject>
- (void)changeSpace:(int)spaceId;

@end

@interface CustomUIScrollView : UIScrollView {
id<ChangeSpaceDelegate> delegate;
}

@property (retain, nonatomic)id delegate;

@end

最佳答案

为了具体回答您的问题,您正在重新定义 delegate 上的属性属性。您从 UIScrollView 获得的属性(property).它应该像所有委托(delegate)一样是 weak (或者,iOS 5 之前的版本,unsafe_unretained)。

但是,您不应该这样做。 UIScrollView已经有一个委托(delegate),如果您希望将实现新委托(delegate)方法的自己的委托(delegate)对象放入其中,UIScrollView 的内部工作原理不会快乐的。为它定义一个新协议(protocol)和一个新的委托(delegate)属性。

@property (weak, nonatomic) id<ChangeSpaceDelegate> changeSpaceDelegate;

关于objective-c - 在 UIScrollView 子类中创建委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830758/

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