備忘録

弱小院生のメモ

macOS10.12 x Objective-C x 32bit(i386)でビルドエラー

ちょっとした理由があり、SwiftではなくObjective-COSXのアプリケーションを書いている。

初遭遇するタイプのハマり方をしたのでメモ書き程度に残しておく。

問題

f:id:reverent_f:20170119190333p:plain

  • Architectures を64bit(x86_64)なら問題なくビルドできる
  • Architectures が32bit(i386)の時のみエラーが発生する

エラー内容

@property (nonatomic, strong) HOGE *hoge;

しているのに

_hoge = fuga;

Use of undeclared identifier '_hoge'.

自動生成されるはずのsetter/getterが作られていない?

stackoverflow.com

5年前の記事だけど、そういうことらしい。 32bit版と64bit版で挙動が異なるなんてことがあるのだなあと勉強になった。 (バグ?)

まとめ

  • Architecturesの違いでSDKの動作が変わるなんてことがあるらしい
  • 思った以上にMacOSSDKの仕様変更の影響は大きい
  • 1から書くのならあまり問題にはならないけれど、古いコードを新SDKに対応させるのはとても大変だ
  • 早くAWSOSXSDKをリリースしてほしい