X



Swift part11 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 2b11-WRiT)
垢版 |
2017/06/28(水) 17:58:29.74ID:KUDOoNV30
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

プログラミング言語Swift Part4
http://egg.2ch.net/test/read.cgi/mac/1484763495/

[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
http://egg.2ch.net/test/read.cgi/mac/1484217623/

Xcode part14
http://egg.2ch.net/test/read.cgi/mac/1476190499/

Swiftアンチスレ part1
http://mevius.2ch.net/test/read.cgi/tech/1458491343/


前スレ
Swift part10
http://mevius.2ch.net/test/read.cgi/tech/1487552413/

スレ立て時は1行目に「!extend::vvvvv」
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0068デフォルトの名無しさん (ワッチョイ f76c-QYYo)
垢版 |
2017/07/11(火) 11:56:52.95ID:uTsC6u070
>>64
Core Foundationのソースを見ろ!
いろんなCの関数が並んでる。
0071デフォルトの名無しさん (ブーイモ MMfb-aOiv)
垢版 |
2017/07/11(火) 13:47:20.91ID:6GA6X5kAM
iosは基本的にhttpsで通信なんだから強いて言えばtcpなんだろうけど、
今時その層を意識する必要あるのかな。websocketとかある時代だし
ルーター超えとか考慮するのにtcpから触るとか無理ある
0072デフォルトの名無しさん (ワッチョイ f7d1-QYYo)
垢版 |
2017/07/11(火) 15:38:11.48ID:NnERboSX0
httpに限らずTCP利用のサービスの方が多いだろ。UDPはよほどパフォーマンス気にするようなサービスでだが、ビデオストリームでさえTCP(それもhttpなんて)でいいやの方が主流でUDP使ってるのが稀になってるだろ
0080デフォルトの名無しさん (ワッチョイ 9f20-gfZI)
垢版 |
2017/07/11(火) 21:21:14.43ID:ARlFR3Nh0
>>76
When to use struct?
https://stackoverflow.com/questions/521298/when-to-use-struct
Choosing Between Class and Struct
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/choosing-between-class-and-struct

✓ CONSIDER defining a struct instead of a class if instances of the type are small and commonly short-lived or are commonly embedded in other objects.

X AVOID defining a struct unless the type has all of the following characteristics:

It logically represents a single value, similar to primitive types (int, double, etc.).

It has an instance size under 16 bytes.

It is immutable.

It will not have to be boxed frequently.
0083デフォルトの名無しさん (ワッチョイ 9f6f-UF+C)
垢版 |
2017/07/12(水) 12:14:48.88ID:Ft5NBnXm0
classはiOS frameworksとの互換性維持のためにあるだけだろ
基本structでいいよ
サーバーサイドはほぼStruct一色だわ
0085デフォルトの名無しさん (ワッチョイ ff17-txss)
垢版 |
2017/07/12(水) 17:42:49.46ID:TL+DQEEP0
>>59
誰も答えないからやってみた
ref. ttps://stackoverflow.com/a/41308592

@IBAction func BtnClick_ConnectTest(_ sender: Any) {
//接続先設定
var port:Int32 = Int32(_textFirld_sendPort.text!)!
var IP:String = _textField_sendIP.text!
var str:String = "test"
MyScocket_init()
setScoketSend(port,IP)

SendUDP(str)
}

int SendUDP(const char* str) {
// パケットをUDPで送信
int ret = sendto(g_sockets[SOCK_SEND].sd, str, strlen(str), 0,
(struct sockaddr *)&g_sockets[SOCK_SEND].sock, sizeof(g_sockets[SOCK_SEND].sock));
if( ret < 0) {
perror("sendto");
}
return ret;
}

昔はUnmanagedやらOpaqueやらUnsafeやら操作しなきゃいけなかったような気がするけど変わったかな
まぁ、Stringは(ほぼ)組み込み型で特別扱いされてるだけで、ARC管理下の自前オブジェクトは管理が必要なはず
0087デフォルトの名無しさん (JP 0H8a-FPdr)
垢版 |
2017/07/13(木) 13:42:07.18ID:gLbFU3lkH
>>85
ありがとうございます!
助かりました。
ちなみにiosでTCP/UDP使う時に使いやすいapiないですか?
今回、UDP通信するにあたってCFソケットも検討したんですが、いまいち使いづらくて

C言語の方が慣れてるんでCで書いたんですけど
0099デフォルトの名無しさん (JP 0H3a-G/zD)
垢版 |
2017/07/17(月) 15:18:50.28ID:fxU6unKKH
>>93-94
shebangが美しいとかω
0103デフォルトの名無しさん (ワッチョイ d06c-Oo8n)
垢版 |
2017/07/19(水) 00:14:23.59ID:9uIEKdpP0
>>102
wikipedia見ただけだと凄そうなんだけど、どんなところがクソなの?
0105デフォルトの名無しさん (ササクッテロリ Sp39-e5K2)
垢版 |
2017/07/19(水) 12:36:23.74ID:BtGwiF1+p
>>103
1. 目標として掲げた言語仕様に対する完成度がswift betaくらいに未完成
2. nimソースを他言語ソースにコンバートして、他言語ソースをネイティブバイナリにコンパイルという微妙なコンパイル手法
3. 1, 2に引きずられているのか書いたコードが仕様通りに動かない(バグったコードがバグるんじゃなく、正しいコードがバグる

Python好きだし期待してた頃もあったけど、一向に完成度が上がらないから諦めた
大企業スポンサーがつかない新興言語はどうしようもないんだなって, Apple/IBMがついてるSwiftはまだマシ
0109デフォルトの名無しさん (ササクッテロラ Sp1b-M4aJ)
垢版 |
2017/07/21(金) 13:51:26.30ID:aL8S5b5tp
一応、GCが付いてたりとランタイムに独自機能は乗ってるけどな

SwiftもObjCへのトランスコンパイラとして実装すれば良かったのかもしれないとふと思った
その程度だとApple公式PJになる意義はなかったかもだけど、今のSwiftランタイムの存在意義と比べてトントンじゃね
0112デフォルトの名無しさん (ササクッテロロ Sp1b-O7UX)
垢版 |
2017/07/21(金) 21:32:57.35ID:vpGxs76Rp
呼び出しのオーバーヘッドもなにもクラス実体があるポインタアドレスに
まるっとデータ送ってるだけだから逆にリンカがコンパイル時に
「ここ」って指定してるのとどこがそんなに違うんですか?的な
0120デフォルトの名無しさん (ササクッテロラ Sp1b-3PLk)
垢版 |
2017/07/22(土) 15:59:40.76ID:WZvf35Ulp
Cocoa, UIKitで他の言語が使えないからなぁ
ObjCだったから発展したんじゃなく、発展に合わせてObjCが普及したのが事実よな

Swiftでないと使えないという環境がないから普及しねぇ
Carthageも流行らなかったから普及に貢献してないし
0125デフォルトの名無しさん (ワッチョイ 47d1-29Ea)
垢版 |
2017/07/22(土) 23:41:33.63ID:QZvpiOv/0
>>122
CarbonがいつC++だったのよ。Cだろ
>>123のいう根本から変わる過渡期にどうするかで出てきたCarbonなんて最初からいつか無くなる運命だし、Carbonよりも先にObjective-Cあったので切り替えでもなんでもないだろ
いつまでもOSネイティブなObjective-Cにしなかったアホが悪いでしかないのに、ゴリ押しとか基礎も結論も妄想がひどすぎ
0130デフォルトの名無しさん (ワッチョイ 2748-dkZs)
垢版 |
2017/07/23(日) 08:39:16.33ID:b9v3bw3F0
C/C++が拒否されてるなんて全く感じたこと無いけど
C/C++でバリバリ書かれてるコードにちょっとCocoa APIをObj-Cで呼び出せばプログラムが完成するって感じだと思うけど
ObjCに強制誘導って思うのは、単にMac OS XのAPIを学びたくないからじゃないの?
0131デフォルトの名無しさん (ワッチョイ 47d1-29Ea)
垢版 |
2017/07/23(日) 11:21:23.34ID:FXaeC0G60
強制誘導ってアホか?
Objective-CのベースだってMac OS X/OS X/macOSのバージョンアップによってC++に書き換えられてるし、CoreはCのままだし、OS X/CocoaはほぼNEXT STEPのまんまと言っていいくらい元々Objective-Cだし、IO KitはC++で書けだし
0132デフォルトの名無しさん (ワッチョイ bf6d-29Ea)
垢版 |
2017/07/23(日) 11:40:38.80ID:wBdpKyPw0
>>128
推しというか、Macの開発(ほんとの生み出す開発)はPascal/Assembleで作っていたんだなあというのは、どこぞの博物館で公開されたQuickDraw/MacPaintのソースでわかる
推すも何もそうだったらそうなるだろ、ドキュメントとか。だが、サード開発ではCが大多数(&CでPascal形式API呼ぶのにほぼツーカーで何も問題ない)で、Appleもそれにならうでしかないな
0134デフォルトの名無しさん (ワッチョイ 477e-48IU)
垢版 |
2017/07/23(日) 12:29:34.74ID:+emKkgEz0
Google Search
Google Trends
Twitter
GitHub
Reddit
などなどを"X programming"っていうテンプレートで検索し、hits countsをrankingしたって事らしい。
0135デフォルトの名無しさん (ササクッテロラ Sp1b-M4aJ)
垢版 |
2017/07/23(日) 12:31:12.51ID:m5jMFDpep
>>130
ObjCをちょっと書かないとmacOS, iOSアプリが作れないように
Swiftをちょっと書かないとモノが作れないくらいのゴリ押しして欲しいなぁと

Appleは作りっぱなしで押さないし、信者はジョブズの聖遺物(ObjC)を崇めるし
Appleがゴリ押しした製品に寄生して銭稼ぎしようとbetaの頃に始めたのに悲しいよ
0136デフォルトの名無しさん (ワッチョイ bf6b-29Ea)
垢版 |
2017/07/23(日) 12:40:43.51ID:+M2gaImH0
世界初のWebブラウザはObjective-Cによって産み出された
まあどーでもいいけど、いまやWeb全盛の時代にそういう言語で最新のアプリが作れる環境が与えられてんだから少しくらい感慨というものを感じてもいいんじゃないの
0138デフォルトの名無しさん (ワッチョイ bf6d-29Ea)
垢版 |
2017/07/23(日) 13:19:23.25ID:wBdpKyPw0
>>130
C++を拒否というならSwiftによって/Swiftがだろうな、現在はw
macOS上のSwiftでは、まあ、Objevtive-C++でラッパー書いてそれをSwiftでだが、Linuxでぼちぼちっとじわっと使われているので、はよSwiftでC++のブリッジを(まあ、Cのインターフェースでラッパー作ればいいんだろうけど)
C++ブリッジの予定ないのかなあ
0140デフォルトの名無しさん (ワッチョイ bf60-ST9I)
垢版 |
2017/07/23(日) 13:26:14.58ID:KVqGyOG90
Uiview.アニメーション関数を使いたいのですが、uiviewanimationoptionsの選択肢が
でてきれくれません。Youtubeを参考にしながら、optionsの部分をcurveLiniearに
したいのですが・・・cを入力しても候補が一切表示されず途方に暮れています。
どういった原因が考えられますか?助けてください。ゲーム作りたいです。
0147デフォルトの名無しさん (ワッチョイ 47a9-bWGY)
垢版 |
2017/07/24(月) 07:40:43.41ID:UKDzlT7I0
でも静的にメモリ管理を解決するって
どんだけ良いものか気になるんだよね。
どうせswift5辺りで採用されんだから、先にrustに触って先行学習してても良いかもね。
多分swiftに採用されたら下位互換性また壊れるぜ
0149デフォルトの名無しさん (ワッチョイ 476c-d1J2)
垢版 |
2017/07/24(月) 09:18:58.69ID:mOlqqWbM0
>>139
時々見る、この「つ」ってどういう意味?
0151デフォルトの名無しさん (エムゾネ FFff-ea0C)
垢版 |
2017/07/24(月) 09:52:25.50ID:LhEoev6pF
>>149
「つ」は、差し出す手のイメージ
0153デフォルトの名無しさん (ワッチョイ 476c-d1J2)
垢版 |
2017/07/24(月) 10:27:01.25ID:mOlqqWbM0
>>151
俺には「つ」が手に見えない。手のひら?手の甲?
0154デフォルトの名無しさん (ワッチョイ 476c-d1J2)
垢版 |
2017/07/24(月) 10:29:33.52ID:mOlqqWbM0
>>152
オブジェクトへの参照が1個、複数の別で、
unique_ptr, shared_ptrを使い分ける。

参照するだけで、所有しないweak_ptrってのもある。

要するにリファレンス・カウント式のメモリ管理なのだ。
Objective-Cの設計をC++が取り入れたのかな?
0155デフォルトの名無しさん (ワッチョイ 476c-d1J2)
垢版 |
2017/07/24(月) 10:30:53.63ID:mOlqqWbM0
ちなみに、俺はC++を最近全然使ってない。C++詳しい人、
unique_ptr, shared_ptr, weak_ptr
の解説、よろしこ!
0157デフォルトの名無しさん (ワッチョイ 6717-M4aJ)
垢版 |
2017/07/24(月) 10:49:27.16ID:d8RjP+270
逆だよ、C++のshared_ptrをObjCのARCに文法糖衣で取り込んだんだよ

>>152
unique_ptrは元々C++ boostのライブラリとして提供してたから出来るでしょ
ObjCもSwiftもそういう機能はライブラリじゃなく文法で取り込みたがるから言語更新待ちになるだけで
0158デフォルトの名無しさん (フリッテル MM4f-bWGY)
垢版 |
2017/07/24(月) 10:49:41.82ID:1TXRI9GxM
リファレンスカウントは全然静的に解決しているメモリ管理機構じゃない。
rustのやり方はコンパイル時に指摘してくれるけど、リファレンスカウントはけっきょく動的に解決するわけだし。
それならとっくにswiftで実現してるし。ARCだろ。
0159デフォルトの名無しさん (ワッチョイ 476c-d1J2)
垢版 |
2017/07/24(月) 11:07:27.25ID:mOlqqWbM0
>>157
Boost Software License - Version 1.0 - August 17th, 2003

って事は、Boostの方が歴史が古そうですなぁ。ObjCよりも。
俺、誤解してたわぁ。
0160デフォルトの名無しさん (ワッチョイ 476c-d1J2)
垢版 |
2017/07/24(月) 11:11:24.98ID:mOlqqWbM0
Apple Inc. deploys ARC in their operating systems, such as macOS (OS X) and iOS.
Limited support (ARCLite)[5] has been available since Mac OS X Snow Leopard and iOS 4,

with complete support following in Mac OS X Lion and iOS 5.[6] Garbage collection was declared deprecated in OS X Mountain Lion,

in favor of ARC, and removed from the Objective-C runtime library in macOS Sierra.[7][8]

ref. en.Wikipedia://ARC
ARC Liteの出現は、2009, Snow Leopardからみたい。
0161デフォルトの名無しさん (フリッテル MM4f-bWGY)
垢版 |
2017/07/24(月) 12:00:46.09ID:1TXRI9GxM
rustのメモリ管理の仕組みを見てきたけどプリプロセッサで何とかなるというものじゃなかったから、
c++ならあると言うものじゃなかった。
言語仕様から改変か必要なものだったよ。

簡単に言えば、メモリの参照は一箇所に制限されて、そこからしかアクセスできないようにする。

たから、もしswiftでrustのメモリ管理機構が導入されたら、
100%既存のコードでは動かないし単純に変換もできない。
ロジックの見直しが必要だからね。

例えば配列にループアクセス中は
配列に対する変更操作はすべてコンパイルエラーになる。とか。
0164デフォルトの名無しさん (ワッチョイ 476c-d1J2)
垢版 |
2017/07/24(月) 15:17:51.01ID:mOlqqWbM0
>>161
「メモリの参照は一箇所」
まあ、そうかもしれんけど、俺の理解では参照カウントを1以上に上げない
様なメモリ管理ポリシーを実践する事で、メモリリークは防げると思う。

それから、Instrumentsとdebuggerを活用するのが吉。
最近気がついたのが、command+IでInstruments leaksを起動して捕捉出来なかったメモリリークが、不思議な事に、break pointで一旦止めてdebuggerからInstruments leaksを起動すると捕捉できるんだよねぇ。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況