Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
Objective-C [ObjC part:8];
http://peace.2ch.net/test/read.cgi/tech/1356341803/
Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
Objective-C [ObjC part:4];
http://pc12.2ch.net/test/read.cgi/tech/1239721860/
Objective-C [ObjC part:3];
ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/
Objective-C
ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/
Objective-C
ttp://pc5.2ch.net/tech/kako/990/990574267.html
Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2014/11/01(土) 13:35:17.70ID:12FSUUrY
770デフォルトの名無しさん
2017/08/09(水) 13:23:22.09ID:qPu9JyaP Obj-Cのラインは行頭に@という手もあるぞ
771デフォルトの名無しさん
2017/08/09(水) 13:28:37.05ID:mzNn5sYF [] はコストが関数呼び出しより高いことを明示してる感じでとても良いと思う。
772デフォルトの名無しさん
2017/08/09(水) 14:34:41.41ID:7tAKIt6P プロパティとかいうドット表記が問題なんだよな, 挙句にgetter/setterのメソッドに紐づいてるし
あれをObjCに取り込んだ害悪は誰だったんだろうね
あれをObjCに取り込んだ害悪は誰だったんだろうね
773デフォルトの名無しさん
2017/08/09(水) 14:53:43.66ID:ocU/hJiZ774デフォルトの名無しさん
2017/08/09(水) 15:10:08.58ID:7tAKIt6P 230デフォルトの名無しさん (ワッチョイ 056c-cJAr)2017/08/09(水) 14:56:18.93ID:ocU/hJiZ0
>>229
Objective-Cでもジェネリクス可能なのか?
どのレベルまでできる?
1. 型汎用な関数
2. 型汎用なクラス
3. 型汎用なプロトコル
4. 型汎用なプロトコル・エクステンション
SwiftスレでObjCについて聞く前にググれ
https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID173
>>229
Objective-Cでもジェネリクス可能なのか?
どのレベルまでできる?
1. 型汎用な関数
2. 型汎用なクラス
3. 型汎用なプロトコル
4. 型汎用なプロトコル・エクステンション
SwiftスレでObjCについて聞く前にググれ
https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID173
775デフォルトの名無しさん
2017/08/09(水) 15:10:17.60ID:qPu9JyaP プロパティじゃなくてもシグネチャ次第でドットにできるけどね
776デフォルトの名無しさん
2017/08/09(水) 15:15:27.76ID:qPu9JyaP あゲッターだけか
777デフォルトの名無しさん
2017/08/09(水) 15:47:05.07ID:ocU/hJiZ >>774
Lightweight Generics
って書いてあるね。
Swiftから呼べるObjective-Cコードは軽量版ジェネリクスってことか?
軽量版ジェネリクスかぁ。。。なんかグッと来る日本語無いかな?
Matzだって名前重要って言ってるし。
Lightweight Generics
って書いてあるね。
Swiftから呼べるObjective-Cコードは軽量版ジェネリクスってことか?
軽量版ジェネリクスかぁ。。。なんかグッと来る日本語無いかな?
Matzだって名前重要って言ってるし。
778デフォルトの名無しさん
2017/08/09(水) 18:10:30.11ID:m222t+F2 >>772
確かそもそもは、Cocoa Binding
Cocoa Binding(内で使う/に指定する)で メンバ(のメンバ?) の表記がドット。Cocoa Bindingとして対象は当然「プロパティ」という概念/名称になろう
この時点ではObjective-Cには property なんてなく、当然ドットもない。Cocoa Bindingがプロパティとして呼び出すのは単にセッター/ゲッター。セッター/ゲッターを量産する手段をObjective-Cには同時期かまたはちょっと後(それまでは、全部手でセッター/ゲッターを書く)
その後いろいろあって、今のに
なので、よくわからんが今やり始めてそう思うのは仕方がないのかもしれないが、無茶苦茶言ってるなてとこかなw
確かそもそもは、Cocoa Binding
Cocoa Binding(内で使う/に指定する)で メンバ(のメンバ?) の表記がドット。Cocoa Bindingとして対象は当然「プロパティ」という概念/名称になろう
この時点ではObjective-Cには property なんてなく、当然ドットもない。Cocoa Bindingがプロパティとして呼び出すのは単にセッター/ゲッター。セッター/ゲッターを量産する手段をObjective-Cには同時期かまたはちょっと後(それまでは、全部手でセッター/ゲッターを書く)
その後いろいろあって、今のに
なので、よくわからんが今やり始めてそう思うのは仕方がないのかもしれないが、無茶苦茶言ってるなてとこかなw
779デフォルトの名無しさん
2017/08/09(水) 18:46:53.08ID:P/9b8Th9 >>769
その【ダメなやつ】を最近もクラスプロパティの言語仕様追加で従来[ ]で呼び出してたものを.で呼び出すように推進してるからなぁ
言語仕様変えただけじゃなくご丁寧にCocoa, UIKitのフレームワークライブラリの実装まで修正してくれてるし
昔は【ダメなやつ】だったのかもしれんが、今は【イイやつ】になってると思うべきなんじゃねw
ObjCの言語仕様が追加されるのはいつものことだし、変わったものをモダンで良いものと思って追い続けないとやってけないよ
その【ダメなやつ】を最近もクラスプロパティの言語仕様追加で従来[ ]で呼び出してたものを.で呼び出すように推進してるからなぁ
言語仕様変えただけじゃなくご丁寧にCocoa, UIKitのフレームワークライブラリの実装まで修正してくれてるし
昔は【ダメなやつ】だったのかもしれんが、今は【イイやつ】になってると思うべきなんじゃねw
ObjCの言語仕様が追加されるのはいつものことだし、変わったものをモダンで良いものと思って追い続けないとやってけないよ
780デフォルトの名無しさん
2017/08/09(水) 18:55:51.12ID:P/9b8Th9 >>777
なんか誤解してそうだけどObjC単体でも使えるからな
ListやDictionaryなんかの一部コレクション系クラスの保持オブジェクトの型をコンパイル時チェックできるようになった
Java5の頃のジェネリクスと同じ感じだな, C++のTemplateみたいな使い方はできないがまぁ仕方あるまい
軽量"版"というからしょぼく見えるんだから軽量ジェネリクスでいいじゃん
コンパイル時間は多少伸びてるだろうが、実行時オーバーヘッドは0のはずだからな
なんか誤解してそうだけどObjC単体でも使えるからな
ListやDictionaryなんかの一部コレクション系クラスの保持オブジェクトの型をコンパイル時チェックできるようになった
Java5の頃のジェネリクスと同じ感じだな, C++のTemplateみたいな使い方はできないがまぁ仕方あるまい
軽量"版"というからしょぼく見えるんだから軽量ジェネリクスでいいじゃん
コンパイル時間は多少伸びてるだろうが、実行時オーバーヘッドは0のはずだからな
781デフォルトの名無しさん
2017/08/09(水) 19:35:58.41ID:eNfr2UIc782デフォルトの名無しさん
2017/08/09(水) 20:09:54.22ID:EM9uH4Ru783デフォルトの名無しさん
2017/08/09(水) 20:20:14.93ID:m222t+F2 >>781
あえてというか、必要性が無かったからだろう
Cocoa BindingでGetter/Setterをたくさん用意しなくてはならない/するのを強制されるのは確か。そういえばGetter/Setterの命名規則もこれのせいだったような(それ以前にあったかもしれないが「でなければならない」ではなかった)
オブジェクトに対しては、
ClassA *obj = …
(*obj).instaceVariable = …;
として、(たぶん)最初からあるけどなww(Cの構造体メンバアクセスとは確か「ちょっと」違う)
最初は構造体のと同じ表記なのに単なるメソッド呼び出しの置き換えとかキモかったなw
あえてというか、必要性が無かったからだろう
Cocoa BindingでGetter/Setterをたくさん用意しなくてはならない/するのを強制されるのは確か。そういえばGetter/Setterの命名規則もこれのせいだったような(それ以前にあったかもしれないが「でなければならない」ではなかった)
オブジェクトに対しては、
ClassA *obj = …
(*obj).instaceVariable = …;
として、(たぶん)最初からあるけどなww(Cの構造体メンバアクセスとは確か「ちょっと」違う)
最初は構造体のと同じ表記なのに単なるメソッド呼び出しの置き換えとかキモかったなw
784デフォルトの名無しさん
2017/08/09(水) 20:31:19.14ID:m222t+F2 >>783
>それ以前にあったかもしれないが「でなければならない」ではなかった
ちょっと違うな
それ以前にあったかもしれないがルールが明文化された
かな。ルールに基づかないのにもなのがsetter=/getter=の存在でもあるし
>それ以前にあったかもしれないが「でなければならない」ではなかった
ちょっと違うな
それ以前にあったかもしれないがルールが明文化された
かな。ルールに基づかないのにもなのがsetter=/getter=の存在でもあるし
785デフォルトの名無しさん
2017/08/09(水) 20:49:27.68ID:qqV2xE2N786デフォルトの名無しさん
2017/08/09(水) 20:57:44.83ID:P/9b8Th9 > オブジェクトに対しては、
> ClassA *obj = …
> (*obj).instaceVariable = …;
> として、(たぶん)最初からあるけどなww
最初からはねーよwww
ギリギリ->オペレータがあったくらいだわ
まぁその当時はC/C++を継承した->は【ダメなやつ】で[ ]のみが正義だったわけだが
> ClassA *obj = …
> (*obj).instaceVariable = …;
> として、(たぶん)最初からあるけどなww
最初からはねーよwww
ギリギリ->オペレータがあったくらいだわ
まぁその当時はC/C++を継承した->は【ダメなやつ】で[ ]のみが正義だったわけだが
787デフォルトの名無しさん
2017/08/09(水) 20:59:19.88ID:m222t+F2788デフォルトの名無しさん
2017/08/09(水) 21:01:34.46ID:m222t+F2789デフォルトの名無しさん
2017/08/09(水) 21:03:58.20ID:qPu9JyaP (*obj).foo も obj->foo も@publicじゃなきゃならんな
Cの構造体の構文に似せてあるが、シュガーだよ
Cの構造体の構文に似せてあるが、シュガーだよ
790デフォルトの名無しさん
2017/08/09(水) 21:15:38.13ID:m222t+F2 >>789
うん。まあ、単なる目に見えるメソッド置き換えよりも、なんか気分的な親和性があったというか
NSObjectの構造を見るとアクセスするのに単純にいかなさそうなんだけど、今はなんか簡単にやってやがるっぽくない?よく調べてないがコンパイルで吐くコードがなんか単純(以前のでの吐くコードがどんなんか知らんけど)
struct objc_class が OBJC2_UNAVAILABLE だから、Objective-C 2.0 で何か思いきったことやってんのかなあ?
うん。まあ、単なる目に見えるメソッド置き換えよりも、なんか気分的な親和性があったというか
NSObjectの構造を見るとアクセスするのに単純にいかなさそうなんだけど、今はなんか簡単にやってやがるっぽくない?よく調べてないがコンパイルで吐くコードがなんか単純(以前のでの吐くコードがどんなんか知らんけど)
struct objc_class が OBJC2_UNAVAILABLE だから、Objective-C 2.0 で何か思いきったことやってんのかなあ?
791デフォルトの名無しさん
2017/08/09(水) 21:51:51.46ID:m222t+F2 >>786
稼働可能状態な古いMac持ってる知り合いに聞いて試してもらったら、10.4では (*). はコンパイル&ランで問題ないって
10.0 から 10.3 の間かなあ?そんな別に無くてもいいもんwいつサポートするようになったか興味がちょっとあるなw(いつの話か教えてくれたら嬉しいな)
稼働可能状態な古いMac持ってる知り合いに聞いて試してもらったら、10.4では (*). はコンパイル&ランで問題ないって
10.0 から 10.3 の間かなあ?そんな別に無くてもいいもんwいつサポートするようになったか興味がちょっとあるなw(いつの話か教えてくれたら嬉しいな)
792デフォルトの名無しさん
2017/08/12(土) 07:30:10.75ID: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なプロパティを使う
くらいです。
外部へはreadonlyプロパティとして公開し、内部向けにclass extentionにてreadwriteプロパティとして再定義したクラスがあります。
これを、swiftで使おうとしたところ、generated headerの中にこのプロパティ定義が作られない事に気付きました。(xcode 8.3.3)
多重定義を止めると、普通にプロパティ定義が作られます。
多重定義プロパティでのgenerated header不具合っぽいのですが、良い対処方法を教えてください。
思いつくのは
・Immutable classのサブクラスとしてmutable classを作り、そこでプロパティを再定義
・readwriteのpropertyを別名でclass extentionで定義しインスタンス変数を共有、内部からはwrなプロパティを使う
くらいです。
793デフォルトの名無しさん
2017/08/12(土) 12:13:53.23ID:dKEWL6WP こういうこと?
Hello.h
--
@interface Hello : NSObject
@property (readonly) int i;
@end
Hello+ReadWrite.h
--
#import "Hello.h"
@interface Hello()
@property (readwrite) int i;
@end
ObjCでもSwiftでもHello+ReadWrite.hをimportしてればrwプロパティとしてアクセスできてる(Xcode8.3.3/High Sierra)
Hello.hをimportしてrwプロパティを持つgenerated headerにならないのは不具合ではなく仕様通りではないかと
Hello.h
--
@interface Hello : NSObject
@property (readonly) int i;
@end
Hello+ReadWrite.h
--
#import "Hello.h"
@interface Hello()
@property (readwrite) int i;
@end
ObjCでもSwiftでもHello+ReadWrite.hをimportしてればrwプロパティとしてアクセスできてる(Xcode8.3.3/High Sierra)
Hello.hをimportしてrwプロパティを持つgenerated headerにならないのは不具合ではなく仕様通りではないかと
794デフォルトの名無しさん
2017/08/12(土) 12:32:23.62ID: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
その場合、プロパティ自体が存在しない空の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
795デフォルトの名無しさん
2017/08/12(土) 13:46:56.49ID:dKEWL6WP 同一プロジェクト内で双方向のpublic getter, private setterはこんな感じでいけた
ttps://pastebin.com/2ckH2LeE
ライブラリプロジェクトでプロジェクトを跨る時はObjC側はBuild Phrases -> HeadersでHello.hをpublic設定して
Swift側は@objc public class HelloSwiftで宣言するんだったかな, @objc publicは最新で不要になってる気もする
多分、ライブラリプロジェクトについて話してるんではないだろうから、ここは意識する必要ないだろうけど
プリミティブ型じゃない時に何か特殊な障害があったかな・・・
ttps://pastebin.com/2ckH2LeE
ライブラリプロジェクトでプロジェクトを跨る時はObjC側はBuild Phrases -> HeadersでHello.hをpublic設定して
Swift側は@objc public class HelloSwiftで宣言するんだったかな, @objc publicは最新で不要になってる気もする
多分、ライブラリプロジェクトについて話してるんではないだろうから、ここは意識する必要ないだろうけど
プリミティブ型じゃない時に何か特殊な障害があったかな・・・
796デフォルトの名無しさん
2017/08/12(土) 14:18:44.04ID:2Yw2XYfL 372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
797デフォルトの名無しさん
2017/08/12(土) 15:21:17.11ID:3WtgEz9W その方法でまんま何も問題ないけど?
Swift側で、入力補完でプロパティ出てくるし、参照に問題なく代入で
cannot assign to property: 'count' is a get-only property
ってエラー出るし
generated headerってなんじゃらほいだが。SwiftでFoobar.countの定義参照(Command+Click)してもFoobar.hのそれまんまがだし
Swift -> Objective-C が Generated Header(SwiftソースからObjective-Cのヘッダーをじぇねれーと)じゃないのかな??Objective-C -> Swift はBridge Header (なにかしているんだろうが、単なる参照用)
Swift側で、入力補完でプロパティ出てくるし、参照に問題なく代入で
cannot assign to property: 'count' is a get-only property
ってエラー出るし
generated headerってなんじゃらほいだが。SwiftでFoobar.countの定義参照(Command+Click)してもFoobar.hのそれまんまがだし
Swift -> Objective-C が Generated Header(SwiftソースからObjective-Cのヘッダーをじぇねれーと)じゃないのかな??Objective-C -> Swift はBridge Header (なにかしているんだろうが、単なる参照用)
798デフォルトの名無しさん
2017/08/12(土) 15:26:34.38ID:3WtgEz9W799デフォルトの名無しさん
2017/08/12(土) 15:37:26.13ID:qaUJfGjG >>795,797
コメントありがとうございます。指摘通り、Generated interfaceの誤りですね。
今手元でこんな感じです。
ttp://i.imgur.com/D8CWZTP.jpg
上がCocoaアプリ、下がFrameworkに置いたものです。
いずれも、Generated I/Fの中に上書きしたプロパティが出てきません。
Xcode再インストールが先でしょうか?
コメントありがとうございます。指摘通り、Generated interfaceの誤りですね。
今手元でこんな感じです。
ttp://i.imgur.com/D8CWZTP.jpg
上がCocoaアプリ、下がFrameworkに置いたものです。
いずれも、Generated I/Fの中に上書きしたプロパティが出てきません。
Xcode再インストールが先でしょうか?
800デフォルトの名無しさん
2017/08/12(土) 15:52:20.34ID:3WtgEz9W >>799
絵が見えないー。何をやってるのか見えなーい
んー… Swiftで作ったクラスをObjective-CでがGenerateだと思うんだがな。HeaderとInterfaceの違いではなく…まあ、どうでもいいけど、Objective-Cで作ったクラスをSwiftででいいのね?
何やってるのか見えないのでなんともだが、とりあえず Product メニューの Clean(よりも、Option押しながらのClean Build Folder…)かな
絵が見えないー。何をやってるのか見えなーい
んー… Swiftで作ったクラスをObjective-CでがGenerateだと思うんだがな。HeaderとInterfaceの違いではなく…まあ、どうでもいいけど、Objective-Cで作ったクラスをSwiftででいいのね?
何やってるのか見えないのでなんともだが、とりあえず Product メニューの Clean(よりも、Option押しながらのClean Build Folder…)かな
801デフォルトの名無しさん
2017/08/12(土) 15:57:11.27ID:qaUJfGjG ttp://light.dotup.org/uploda/light.dotup.org471442.png.html
すみません貼り直します。
Obj-c => Swift が目標です。
すみません貼り直します。
Obj-c => Swift が目標です。
802デフォルトの名無しさん
2017/08/12(土) 16:09:41.21ID:3WtgEz9W >>801
ん??右端の Hello.h が generated header/Generated interface とやら?んなのいらんだろ??
単に、Bridge Header に、その左隣の Objective-C 用の Hello.c をインポートすればいいだけだろ??>>795さんのでいえば30から31行目、Hello-Bridging-Header.hというファイルに#import "Hello.h"を一行
Bridge Headerを使うようには設定でだが、Objective-Cのプロジェクトで最初にSwiftファイル作れば、「Bridge Headerつくるよ」とXcodeが勝手にやってくれるし、その後設定を確認してみればBridge Headerを使う設定がわかるだろう
ん??右端の Hello.h が generated header/Generated interface とやら?んなのいらんだろ??
単に、Bridge Header に、その左隣の Objective-C 用の Hello.c をインポートすればいいだけだろ??>>795さんのでいえば30から31行目、Hello-Bridging-Header.hというファイルに#import "Hello.h"を一行
Bridge Headerを使うようには設定でだが、Objective-Cのプロジェクトで最初にSwiftファイル作れば、「Bridge Headerつくるよ」とXcodeが勝手にやってくれるし、その後設定を確認してみればBridge Headerを使う設定がわかるだろう
803デフォルトの名無しさん
2017/08/12(土) 16:13:00.14ID:3WtgEz9W >>802
>勝手にやってくれる
Bridge Headerファイルの作成と、プロジェクトへのBridge Headerファイル登録と、ビルド設定ね
Swiftで使うクラスは、Bridge Headerに自分で記述する(単に#import "….h")
>勝手にやってくれる
Bridge Headerファイルの作成と、プロジェクトへのBridge Headerファイル登録と、ビルド設定ね
Swiftで使うクラスは、Bridge Headerに自分で記述する(単に#import "….h")
804デフォルトの名無しさん
2017/08/12(土) 16:22:45.31ID:3WtgEz9W >>802
すまん。ちょこちょこ間違えた
>その左隣の Objective-C 用の Hello.c
その左隣の Objective-C 用の Hello.h
>でいえば30から31行目
でいえば30から32行目
すまん。ちょこちょこ間違えた
>その左隣の Objective-C 用の Hello.c
その左隣の Objective-C 用の Hello.h
>でいえば30から31行目
でいえば30から32行目
805デフォルトの名無しさん
2017/08/12(土) 20:56:39.29ID:3WtgEz9W >>801
そういえば、(標準の)Frameworkは?ってのは、umbrella headerってのをFrameworkに仕込むらしい
それも、ヘッダーはそんなSwiftみたいなのではなく、単にObjective-Cのヘッダー(をSwift用にプリコンパイル(?)してモジュール化しての)
すると、Swiftで
import Foobar
ってだけで
そういえば、(標準の)Frameworkは?ってのは、umbrella headerってのをFrameworkに仕込むらしい
それも、ヘッダーはそんなSwiftみたいなのではなく、単にObjective-Cのヘッダー(をSwift用にプリコンパイル(?)してモジュール化しての)
すると、Swiftで
import Foobar
ってだけで
806デフォルトの名無しさん
2017/08/12(土) 21:33:48.50ID:3WtgEz9W >>805
ああ、umbrella headerって、Objective-Cでも/でのModulesのためのか。@importの。@importなんて忘れてたw
それの使用/流用か?@importはSwiftより1年先みたいだし
ああ、umbrella headerって、Objective-Cでも/でのModulesのためのか。@importの。@importなんて忘れてたw
それの使用/流用か?@importはSwiftより1年先みたいだし
807デフォルトの名無しさん
2017/08/12(土) 21:37:17.32ID:vLIuNhx/ 流用っていうかLLVMの機能
808デフォルトの名無しさん
2017/08/13(日) 11:30:09.68ID:TkYKFb/H 解決できてなさそうだから一式上げた
ttps://www.dropbox.com/s/dycv00sv7gc9c9a/Hello.zip?dl=0
Swift PJをベースに作ったけど、ObjC PJベースで作っても同じ感じ
Hello-Bridging-Header.h を適切に作成、参照させてないのが原因とエスパーしとく
参照設定はXcodeで Hello -> Build Settings -> Swift Compiler - General -> Objective-C Bridging Header の所な
ttps://www.dropbox.com/s/dycv00sv7gc9c9a/Hello.zip?dl=0
Swift PJをベースに作ったけど、ObjC PJベースで作っても同じ感じ
Hello-Bridging-Header.h を適切に作成、参照させてないのが原因とエスパーしとく
参照設定はXcodeで Hello -> Build Settings -> Swift Compiler - General -> Objective-C Bridging Header の所な
809デフォルトの名無しさん
2017/08/13(日) 14:47:06.11ID:XQniorI3 アンブレラヘッダって、Cでよくやる各モジュールのヘッダをincludeしてまとめてあるヘッダのこと
810デフォルトの名無しさん
2017/08/13(日) 16:13:58.67ID:OaUgUnZt iOSでアンブレラヘッダって出来るんだっけ
811デフォルトの名無しさん
2017/08/13(日) 16:17:13.40ID:XQniorI3 できるよ
.h作って必要なヘッダを#import
.h作って必要なヘッダを#import
812デフォルトの名無しさん
2017/08/13(日) 16:32:48.83ID:OaUgUnZt813デフォルトの名無しさん
2017/08/13(日) 17:27:14.87ID:GzzlNSce >>811
ごめん、アンブレラヘッダとアンブレラフレームワークと混同してた。frameworkも出来るみたい。
ごめん、アンブレラヘッダとアンブレラフレームワークと混同してた。frameworkも出来るみたい。
814デフォルトの名無しさん
2017/08/13(日) 19:08:50.09ID:3CTOgVkL 皆さんありがとうございます。
どうにもドツボにはまっているので、頂いたものを勉強し直します。
どうにもドツボにはまっているので、頂いたものを勉強し直します。
815デフォルトの名無しさん
2017/08/30(水) 09:43:22.83ID:thVvZo3p Xcodeのメジャーバージョンアップに合わせた言語仕様更新
ここ2年くらいないけどもうObjCの改善はやめたのかな
ここ2年くらいないけどもうObjCの改善はやめたのかな
816デフォルトの名無しさん
2017/08/30(水) 14:31:13.31ID:VdDjZJhL Xcode 8からクラスプロパティが入った。
Xcode 9はわからん。
仕様変更は正直いらないよ。新機能の追加だけで十分。
最近のObjective-Cの良いところは仕様変更が少ないことだと思う。
Swiftは変更しすぎでついていけない。
Xcode 9はわからん。
仕様変更は正直いらないよ。新機能の追加だけで十分。
最近のObjective-Cの良いところは仕様変更が少ないことだと思う。
Swiftは変更しすぎでついていけない。
817デフォルトの名無しさん
2017/08/30(水) 16:55:31.83ID:thVvZo3p そうか、クラスプロパティが去年だったか, 地味だから忘れてた
Xcode9は今出てるリリースノートの範疇を見るになさそうなんだよねぇ
最近のObjC下位互換破棄はGCの完全撤廃がXcode8であったような?誰も使ってないだろうけども
ObjCはシンタックスシュガー多いけど基本は残していくスタンスよな
Xcode9は今出てるリリースノートの範疇を見るになさそうなんだよねぇ
最近のObjC下位互換破棄はGCの完全撤廃がXcode8であったような?誰も使ってないだろうけども
ObjCはシンタックスシュガー多いけど基本は残していくスタンスよな
818デフォルトの名無しさん
2017/08/30(水) 18:53:05.49ID:OtY774nI >>816
ころころ仕様が変わったら何のデバッグしてるのかわからんからね
ころころ仕様が変わったら何のデバッグしてるのかわからんからね
819デフォルトの名無しさん
2017/08/31(木) 12:33:49.66ID:ELOqa+z/ Xcode9では言語仕様追加はないのか
毎年何らか追加してきてたし、ネタ切れってわけでもないだろうに、Swiftにリソース食われてるのかねぇ
Swiftはコミュニティにぶん投げて、AppleはObjCの言語仕様をアップデートしてくれよなぁ
毎年何らか追加してきてたし、ネタ切れってわけでもないだろうに、Swiftにリソース食われてるのかねぇ
Swiftはコミュニティにぶん投げて、AppleはObjCの言語仕様をアップデートしてくれよなぁ
820デフォルトの名無しさん
2017/08/31(木) 16:41:09.38ID:DmRL1EOk nullability にしろ generics にしろ、最近の変更は swift から obj-c を使いやすくするのに必要なものだったから、もうやることはあまり残ってなさそう
821デフォルトの名無しさん
2017/09/01(金) 09:02:41.01ID:YXmfUhFy autoキーワードのデフォルト有効化はよ
ObjC++(.mm)にすれば良いんだけどなんか違う、idをautoの代わりに使うのはもっと違う
ObjC++(.mm)にすれば良いんだけどなんか違う、idをautoの代わりに使うのはもっと違う
822デフォルトの名無しさん
2017/09/01(金) 10:47:18.17ID:B8cKPTM5 C++17も出るし、C++14, 17の新規機能のポーティングが始まるんじゃね?今年はもう間に合わんだろうけど
clangとしてC++17は進めてるんだろうから、いつものように文法糖衣してObjCに突っ込むだろ
clangとしてC++17は進めてるんだろうから、いつものように文法糖衣してObjCに突っ込むだろ
823デフォルトの名無しさん
2017/09/01(金) 11:18:48.86ID:ZEZMvH77 いっそのことObjective-C++使おうかな。
C++の仕様を部分的にポーティングしてくれるならそれもいいけど。
@autoみたいな記法は流石に勘弁だけど。
C++の仕様を部分的にポーティングしてくれるならそれもいいけど。
@autoみたいな記法は流石に勘弁だけど。
824デフォルトの名無しさん
2017/09/01(金) 12:05:12.13ID:pDFuyP/L ObjC++はコンパイル遅い。
825デフォルトの名無しさん
2017/09/01(金) 17:48:15.95ID:Ev7WXpGx ObjC++だとリファクタリング効かないから大変。
あれ何とかならないかなぁ。
あれ何とかならないかなぁ。
826デフォルトの名無しさん
2017/09/01(金) 18:21:04.93ID:5JXRZXNo C++はコンパイル速度より実行時速度に重きを置いてるから仕方ないね
ObjC++でTemplateが使えたら幸せなんだけどなぁ
常時Dynamic Dispatchで実行速度が遅いObjC環境でTemplate使った速度改善なんて滑稽な話ではあるが
ObjC++でTemplateが使えたら幸せなんだけどなぁ
常時Dynamic Dispatchで実行速度が遅いObjC環境でTemplate使った速度改善なんて滑稽な話ではあるが
827デフォルトの名無しさん
2017/09/01(金) 22:21:55.44ID:5GGRc0ni >実行速度が遅い
それが問題になるほどの崇高なプログラムを組んでらっしゃるのかな
それが問題になるほどの崇高なプログラムを組んでらっしゃるのかな
828デフォルトの名無しさん
2017/09/01(金) 22:30:27.59ID:shKG9pre そういう人はいくらでもいるでしょ
829デフォルトの名無しさん
2017/09/01(金) 22:34:33.64ID:zaPu8SCI 計算物理学とか処理速度は常に足を引っ張ってくるからね
830デフォルトの名無しさん
2017/09/01(金) 22:44:52.87ID:pDFuyP/L ObjC++ってC++で書かれたコア部分をラッピングするための装置。
831デフォルトの名無しさん
2017/09/01(金) 23:03:50.42ID:5BLkbp3y > ObjC++はコンパイル遅い。
これが問題になる人よりは多いでしょ, コンパイル速度より実行速度を気するわな
ObjC++はC++の機能を使うための装置でもあるがな
auto以外にもモダンな機能が使えるからModern Objective-Cがモダンじゃないと感じ始めたら使うのも一興
性能良くてモダンな機能が使えるObjC++はイイゾー
これが問題になる人よりは多いでしょ, コンパイル速度より実行速度を気するわな
ObjC++はC++の機能を使うための装置でもあるがな
auto以外にもモダンな機能が使えるからModern Objective-Cがモダンじゃないと感じ始めたら使うのも一興
性能良くてモダンな機能が使えるObjC++はイイゾー
832デフォルトの名無しさん
2017/09/01(金) 23:45:22.97ID:ZEZMvH77 コンパイル遅くなるって具体的にどんなケースなの?
既存のobjcソースをobjc++としてコンパイルする程度ならほとんど変わらなそうだけど。
autoやメンバー関数なんかの簡単な機能使う程度なら十分お釣りが来る気がする。
既存のobjcソースをobjc++としてコンパイルする程度ならほとんど変わらなそうだけど。
autoやメンバー関数なんかの簡単な機能使う程度なら十分お釣りが来る気がする。
833デフォルトの名無しさん
2017/09/02(土) 10:48:43.59ID:u5MjsaOO モダン、モダンうるせーよw
モダンであることが目的になってねーか?おまえら
モダンであることが目的になってねーか?おまえら
834デフォルトの名無しさん
2017/09/02(土) 12:06:13.00ID:qBo532qK ものによっちゃあクラシックよりは良いだろうな
835デフォルトの名無しさん
2017/09/02(土) 18:57:24.45ID:AHW4eZK5 >>832
- (instancetype) init {
self = [super init];
// メソッドcountがNSIntegerを返すと誤認して利用
// NSInteger a = [self count]; // 型推論なし:ここでビルドエラー
auto a = [self count];
/* 100行くらいの処理 */
a = a + 1; // 型推論あり:ここでビルドエラー
return self;
}
- (NSNumber *) count {
return @0;
}
こんな感じのマヌケなコード書いてると
100行くらいの無駄なコンパイル処理を経てようやくビルドエラーが出るので
autoキーワード(型推論)を使うObjC++はビルド時間が遅い
・・・という型推論否定論があるんだろうと最近は思うようにしてる
なお、auto a = [self count];とNSNumber *a = [self count];だけを比較したら
型推論使った方が両辺の型一致を判定する必要ない分だけ早くなり得ると思う
- (instancetype) init {
self = [super init];
// メソッドcountがNSIntegerを返すと誤認して利用
// NSInteger a = [self count]; // 型推論なし:ここでビルドエラー
auto a = [self count];
/* 100行くらいの処理 */
a = a + 1; // 型推論あり:ここでビルドエラー
return self;
}
- (NSNumber *) count {
return @0;
}
こんな感じのマヌケなコード書いてると
100行くらいの無駄なコンパイル処理を経てようやくビルドエラーが出るので
autoキーワード(型推論)を使うObjC++はビルド時間が遅い
・・・という型推論否定論があるんだろうと最近は思うようにしてる
なお、auto a = [self count];とNSNumber *a = [self count];だけを比較したら
型推論使った方が両辺の型一致を判定する必要ない分だけ早くなり得ると思う
836デフォルトの名無しさん
2017/09/02(土) 19:14:40.76ID:Qzt2A3g3 マヌケっぽいけどイ`
837デフォルトの名無しさん
2017/09/02(土) 20:19:08.25ID:GaaWhR7c C++の型推論は戻り値型が確定していればその場でNSNumber *に置き換えてくれるんじゃね?
よほど変なコード書かない限りコンパイル速度が問題になることは無いだろう。
Xcodeはデフォルトでプリコンパイルしてくれるし、C++でもやってくれるでしょ。
よほど変なコード書かない限りコンパイル速度が問題になることは無いだろう。
Xcodeはデフォルトでプリコンパイルしてくれるし、C++でもやってくれるでしょ。
838デフォルトの名無しさん
2017/09/02(土) 20:20:06.63ID:GaaWhR7c 型推論にかぎらず
839デフォルトの名無しさん
2017/09/04(月) 00:53:58.51ID:JKJOfy4O ObjC++がコンパイル遅いって具体例、他にないのかね
一例は捻り出してみたけど、遅いと主張してる人たちからは何も出てこない...
一例は捻り出してみたけど、遅いと主張してる人たちからは何も出てこない...
840デフォルトの名無しさん
2017/09/04(月) 01:11:16.27ID:9h/7te1O 遅さが実感できないならそれで良いんじゃね
841デフォルトの名無しさん
2017/09/05(火) 06:26:53.84ID:PmP+sl68 >>824はObjC信者の妄言ではないと実証しないとダメじゃない?
842デフォルトの名無しさん
2017/09/05(火) 13:34:45.75ID:Fbd5ldy5 真の信者はObjC++も受け入れる。
実際ObjC++はそれほど遅くはないよ。
今はClangコンパイラがデフォルトになってるからかなり早い。
むしろSwiftのほうが遅く感じる。
実際ObjC++はそれほど遅くはないよ。
今はClangコンパイラがデフォルトになってるからかなり早い。
むしろSwiftのほうが遅く感じる。
843デフォルトの名無しさん
2017/09/05(火) 22:19:53.34ID:CWg4/G2u 今は亡き真のApple信者はObjCは素晴らしい、Swiftも素晴らしい
Appleの提供するものは全て素晴らしいってSwiftスレで孤軍奮闘してたよ(Swift1.xの時代
Swiftはcopying swift libraryにクッソ時間かかるから論外だと思う, 10Mbyteの小さな()ランタイムのコピーは失笑しか出ない
それはそれとして、いい加減ObjCのみが素晴らしいって主張のObjC信者はObjC++が遅いって実証を出せゴルァ
ObjC++を許容する真の信者(笑)の根拠のない感想なんてどうでもいいんだよ
Appleの提供するものは全て素晴らしいってSwiftスレで孤軍奮闘してたよ(Swift1.xの時代
Swiftはcopying swift libraryにクッソ時間かかるから論外だと思う, 10Mbyteの小さな()ランタイムのコピーは失笑しか出ない
それはそれとして、いい加減ObjCのみが素晴らしいって主張のObjC信者はObjC++が遅いって実証を出せゴルァ
ObjC++を許容する真の信者(笑)の根拠のない感想なんてどうでもいいんだよ
844デフォルトの名無しさん
2017/09/05(火) 23:15:55.98ID:Jq7SE38L 信者信者ってわざと言ってるのにはもう見えないな。マジで言ってるのならキチだな
845デフォルトの名無しさん
2017/09/06(水) 17:08:25.60ID:SQ4/Zkph >>843はどう見ても基地外だろう。
846デフォルトの名無しさん
2017/09/07(木) 08:58:40.01ID:Omz9mDs1 触ると増える
847デフォルトの名無しさん
2017/09/08(金) 07:44:30.62ID:Wi5IEwLQ848デフォルトの名無しさん
2017/09/08(金) 11:02:58.01ID:ouBjF6hv もう信者ネタは飽きた。
ところでObjC++ってObjCには満足出来ないけどSwiftに移行するほどでもないっていう人には良い言語だよな。
ところでObjC++ってObjCには満足出来ないけどSwiftに移行するほどでもないっていう人には良い言語だよな。
849デフォルトの名無しさん
2017/09/08(金) 11:39:16.63ID:0ohCbX1Y 主に感情を揺さぶることが目的でしかない信者信仰とか無くてもいいもん言い出してるのを無視して何を言っているのか、マジなのか馬鹿すぎキチガイすぎでという点ではな
Objective-Cでも満足できるけどC++も使わなければならないので良い言語だなあ
上の方でラッパーするには的なことあるけど、わざわざラッパーを作らずにちゃんぽんでで
Objective-Cでも満足できるけどC++も使わなければならないので良い言語だなあ
上の方でラッパーするには的なことあるけど、わざわざラッパーを作らずにちゃんぽんでで
850デフォルトの名無しさん
2017/09/08(金) 17:15:02.30ID:E/p7ocd2 その時間から酒飲んでるのか。プレミアムフライデーうらやましい。
851デフォルトの名無しさん
2017/09/09(土) 07:29:36.83ID:4vXDR/AT 具体的にc++を使うとobjcはどんな風に楽になるのか解説頼む。
swiftの言語仕様の破壊的変更には辟易するけど。
swiftの言語仕様の破壊的変更には辟易するけど。
852デフォルトの名無しさん
2017/09/09(土) 07:33:07.60ID:LN4nKJDq 楽になるもなにもobjective-CとC++はCの拡張方向が違うから
単純にC++の文法をObjective-C++でプロジェクト作るとそのまま食うってだけだぞ。
単純にC++の文法をObjective-C++でプロジェクト作るとそのまま食うってだけだぞ。
853デフォルトの名無しさん
2017/09/09(土) 19:33:30.38ID:8E3FMuHj854デフォルトの名無しさん
2017/09/09(土) 19:35:50.45ID:2PbJjEWF 型推論ってBASICかよ。。
855デフォルトの名無しさん
2017/09/10(日) 07:43:48.22ID:jzTwYGLB ObjC++についてObjC信者連呼してる君、かなり深刻なお脳の病気を持ってそうだな。
856デフォルトの名無しさん
2017/09/10(日) 07:58:49.24ID:mLTl9fJv 右辺値の型を左辺の変数の型にする機能はModulaの昔からあるんだけど、そんなものは型推論とは呼ばれてなかった
型推論というのは一般にMLにある型変数が飛び交うようなのを指すもので、C++でいえばtemplateのパラメータが相当する
autoを型推論と呼ばないで欲しい。C++が用語を歪めたのが悪いんだけど
あとBASICにはどっちの意味でも型推論は無いぞ、バリアント型の間違いじゃね
型推論というのは一般にMLにある型変数が飛び交うようなのを指すもので、C++でいえばtemplateのパラメータが相当する
autoを型推論と呼ばないで欲しい。C++が用語を歪めたのが悪いんだけど
あとBASICにはどっちの意味でも型推論は無いぞ、バリアント型の間違いじゃね
857デフォルトの名無しさん
2017/09/10(日) 09:07:15.21ID:xTzJbttv >>856
メーリングリストが何だって?
メーリングリストが何だって?
858デフォルトの名無しさん
2017/09/10(日) 09:43:03.26ID:6eMl9Cue859デフォルトの名無しさん
2017/09/10(日) 09:53:31.64ID:mLTl9fJv860デフォルトの名無しさん
2017/09/10(日) 10:57:19.42ID:EO9qqnso 前に言ったかもしれないけどObjC++のコンパイル速度はそんな遅くないよ。
c++で遅くなるような処理をobjc++で書けばそれりゃ遅くなるけど。
DSL作るとかじゃなければ気にならない。
objc++のプロジェクト書いてるけど、ビルド&リンク時間は1秒くらい。
同じ規模のswiftのプロジェクトが3秒だから相当速い。
c++で遅くなるような処理をobjc++で書けばそれりゃ遅くなるけど。
DSL作るとかじゃなければ気にならない。
objc++のプロジェクト書いてるけど、ビルド&リンク時間は1秒くらい。
同じ規模のswiftのプロジェクトが3秒だから相当速い。
861デフォルトの名無しさん
2017/09/10(日) 11:31:14.81ID:w1siUvvP できればobj-c++の有用例をqiita辺りに纏めてくれないかな。
需要はあると思うんで。
言葉で語られてもピンとこない。実際のコードで示して欲しい。
需要はあると思うんで。
言葉で語られてもピンとこない。実際のコードで示して欲しい。
862デフォルトの名無しさん
2017/09/10(日) 13:07:44.32ID:EO9qqnso ググれば足りる
「Objective-C++11 - 星一のはてなブログ」
「Objective-C++でSwiftに挑む」
あと「SwiftのそれObjective-Cで出来るよ」って記事、前にあった気がすんだけどあれ何処いったんだ?
「Objective-C++11 - 星一のはてなブログ」
「Objective-C++でSwiftに挑む」
あと「SwiftのそれObjective-Cで出来るよ」って記事、前にあった気がすんだけどあれ何処いったんだ?
863デフォルトの名無しさん
2017/09/10(日) 15:23:22.28ID:ODr7u6re864デフォルトの名無しさん
2017/09/10(日) 15:28:06.27ID:YhxCzOtN 型推論できないと効率が下がるプログラマー
865デフォルトの名無しさん
2017/09/10(日) 19:50:23.81ID:w1siUvvP866デフォルトの名無しさん
2017/09/10(日) 20:02:20.98ID:xTzJbttv Swift使えっていう布教活動なら納得
867デフォルトの名無しさん
2017/09/10(日) 21:34:33.40ID:UkktAReA BASICは成り立ちというか設計者の話を聞く限り
「FORTRNとかでプログラム教える時に"型"でつまずくから
「数字」と「文字」という二つの分類にしました。
いやぁ、for~next step 0.5とか想定回数回すようにするの大変でしたよ、ハッハッハ」で
最近の"型推論"でごちゃごちゃ問題起きてるの眺めるたびに
ほんとこの世界は過去から学ばねぇなと思ってる。
「FORTRNとかでプログラム教える時に"型"でつまずくから
「数字」と「文字」という二つの分類にしました。
いやぁ、for~next step 0.5とか想定回数回すようにするの大変でしたよ、ハッハッハ」で
最近の"型推論"でごちゃごちゃ問題起きてるの眺めるたびに
ほんとこの世界は過去から学ばねぇなと思ってる。
868デフォルトの名無しさん
2017/09/10(日) 23:48:48.08ID:3pmx1gWM Swiftでいいわ
じゃあの
じゃあの
869デフォルトの名無しさん
2017/09/11(月) 03:08:54.09ID:+NzND3PL >>868
バイバーイ
バイバーイ
■ このスレッドは過去ログ倉庫に格納されています
