Как реализовать «Didset of Swift» в объективе-c?

Swift (из книги «Анимации для iOS по учебным пособиям: глава 12»), выпущенной http://www.raywenderlich.com /):

let photoLayer = CALayer()

@IBInspectable
  var image: UIImage! {
    didSet {
      photoLayer.contents = image.CGImage
    }
}

Как я могу реализовать вышеупомянутый синтаксис в target-c? Я знаю только, чтобы установить свойства photoLayer и изображения, как показано ниже:

@property (strong, nonatomic) CALayer *photoLayer;
@property (strong, nonatomic) IBInspectable UIImage *image;

Но я не знаю, как реализовать части didset{...}, используя синтаксис target-c, помогите!

12 голосов | спросил codingiran 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 24 Sep 2015 11:05:41 +0300 2015, 11:05:41

2 ответа


0

переопределите установщик и самостоятельно внедрите его.

- (void)setImage:(UIImage*)image {
    _image = image;
    photoLayer.contents = image.CGImage
}
ответил Daij-Djan 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 24 Sep 2015 11:13:50 +0300 2015, 11:13:50
0

Swift для этого нужны особые языковые возможности, поскольку из-за статической природы нельзя создавать подклассы во время выполнения.

В Objective-C это не обязательно, поэтому у вас нет языковой функции для этого. Вы можете использовать наблюдение значения ключа .

Но если наблюдающий экземпляр - это экземпляр, свойство которого изменилось, вы можете сделать это с помощью подклассов, как упомянуто @ Daij-Djan. (В основном это то, что вы делаете в Swift.) Кроме того, в Objective-C у вас есть возможность наблюдать свойства другого экземпляра другого класса.

ответил Amin Negm-Awad 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 24 Sep 2015 11:20:19 +0300 2015, 11:20:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132