我有一个包含如下属性的Objective-C协议:
#import <Foundation/Foundation.h>
@protocol Playback <NSObject>
@optional
@property (nonatomic, nonnull) NSURL *assetURL;
@end
PlayerController
具有类型的属性id<Playback>
:
@interface PlayerController: NSObject
@property (nonatomic, strong, nonnull) id<Playback> currentPlayerManager;
@end
我尝试在Swift中编写以下代码,但出现错误:
var player = PlayerController()
var pla = player.currentPlayerManager
pla.assetURL = URL(string: "123") // ❌ Cannot assign to property: 'pla' is immutable
如果我@optional
为Playback
协议注释掉,那么它编译得很好。
这让我想知道为什么@optional
会导致这个错误?