- Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
792 :デフォルトの名無しさん[sage]:2017/08/12(土) 07:30:10.75 ID:qaUJfGjG - objective-c property のアクセス制限で相談です。
外部へはreadonlyプロパティとして公開し、内部向けにclass extentionにてreadwriteプロパティとして再定義したクラスがあります。 これを、swiftで使おうとしたところ、generated headerの中にこのプロパティ定義が作られない事に気付きました。(xcode 8.3.3) 多重定義を止めると、普通にプロパティ定義が作られます。 多重定義プロパティでのgenerated header不具合っぽいのですが、良い対処方法を教えてください。 思いつくのは ・Immutable classのサブクラスとしてmutable classを作り、そこでプロパティを再定義 ・readwriteのpropertyを別名でclass extentionで定義しインスタンス変数を共有、内部からはwrなプロパティを使う くらいです。
|
- Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
794 :デフォルトの名無しさん[sage]:2017/08/12(土) 12:32:23.62 ID:qaUJfGjG - いえ、公開したいのは、readonlyなプロパティなので、上記例で言えばHello.hの方です。
その場合、プロパティ自体が存在しない空のgenerated headerになってしまいました。 Foobar.h @interface Foobar: NSObject @property (readonly) uint32_t count @end Foobar+internal.h @interface Foobar () @property (readwrite) uint32_t count @end Foobar.m #import "Foobar.h" @implementation Foobar @end
|
- Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
799 :デフォルトの名無しさん[sage]:2017/08/12(土) 15:37:26.13 ID:qaUJfGjG - >>795,797
コメントありがとうございます。指摘通り、Generated interfaceの誤りですね。 今手元でこんな感じです。 ttp://i.imgur.com/D8CWZTP.jpg 上がCocoaアプリ、下がFrameworkに置いたものです。 いずれも、Generated I/Fの中に上書きしたプロパティが出てきません。 Xcode再インストールが先でしょうか?
|
- Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
801 :デフォルトの名無しさん[sage]:2017/08/12(土) 15:57:11.27 ID:qaUJfGjG - ttp://light.dotup.org/uploda/light.dotup.org471442.png.html
すみません貼り直します。 Obj-c => Swift が目標です。
|